@limetech/lime-elements 36.4.0 → 37.0.0-dev.1
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/cjs/_arrayIncludesWith-29083f83.js +2 -0
- package/dist/cjs/_arrayIncludesWith-29083f83.js.map +1 -0
- package/dist/cjs/_assignValue-7c18d8d6.js +2 -0
- package/dist/cjs/_assignValue-7c18d8d6.js.map +1 -0
- package/dist/cjs/_commonjsHelpers-0c557e26.js +2 -0
- package/dist/cjs/_commonjsHelpers-0c557e26.js.map +1 -0
- package/dist/cjs/_defineProperty-8f56146d.js +2 -0
- package/dist/cjs/_defineProperty-8f56146d.js.map +1 -0
- package/dist/cjs/_getNative-60328036.js +2 -0
- package/dist/cjs/_getNative-60328036.js.map +1 -0
- package/dist/cjs/animationframe-e4c1798e.js +2 -0
- package/dist/cjs/animationframe-e4c1798e.js.map +1 -0
- package/dist/cjs/{checkbox.template-60ed3ee2.js → checkbox.template-234f4813.js} +3 -1
- package/dist/cjs/checkbox.template-234f4813.js.map +1 -0
- package/dist/cjs/component-66df95e7.js +2 -0
- package/dist/cjs/component-66df95e7.js.map +1 -0
- package/dist/cjs/component-67144c1c.js +2 -0
- package/dist/cjs/component-67144c1c.js.map +1 -0
- package/dist/cjs/component-ae3bfacf.js +2 -0
- package/dist/cjs/component-ae3bfacf.js.map +1 -0
- package/dist/cjs/component-cf490570.js +2 -0
- package/dist/cjs/component-cf490570.js.map +1 -0
- package/dist/cjs/component-dd795ff0.js +2 -0
- package/dist/cjs/component-dd795ff0.js.map +1 -0
- package/dist/cjs/config-c6520559.js +2 -0
- package/dist/cjs/config-c6520559.js.map +1 -0
- package/dist/cjs/device-c5841113.js +2 -0
- package/dist/cjs/device-c5841113.js.map +1 -0
- package/dist/cjs/dispatch-resize-event-4462d78f.js +2 -0
- package/dist/cjs/dispatch-resize-event-4462d78f.js.map +1 -0
- package/dist/cjs/dom-eb080f70.js +2 -0
- package/dist/cjs/dom-eb080f70.js.map +1 -0
- package/dist/cjs/eq-9a943b00.js +2 -0
- package/dist/cjs/eq-9a943b00.js.map +1 -0
- package/dist/cjs/format-5b928cf3.js +2 -0
- package/dist/cjs/format-5b928cf3.js.map +1 -0
- package/dist/cjs/identity-6dc34885.js +2 -0
- package/dist/cjs/identity-6dc34885.js.map +1 -0
- package/dist/cjs/{index-287e25e0.js → index-aafa56ee.js} +209 -23
- package/dist/cjs/index-aafa56ee.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/isArray-d188a04f.js +2 -0
- package/dist/cjs/isArray-d188a04f.js.map +1 -0
- package/dist/cjs/isArrayLike-ac53bdac.js +2 -0
- package/dist/cjs/isArrayLike-ac53bdac.js.map +1 -0
- package/dist/cjs/isEqual-d2a13a24.js +2 -0
- package/dist/cjs/isEqual-d2a13a24.js.map +1 -0
- package/dist/cjs/isObject-e28b7997.js +2 -0
- package/dist/cjs/isObject-e28b7997.js.map +1 -0
- package/dist/cjs/isObjectLike-3e3f0cba.js +2 -0
- package/dist/cjs/isObjectLike-3e3f0cba.js.map +1 -0
- package/dist/cjs/isSymbol-d22b2798.js +2 -0
- package/dist/cjs/isSymbol-d22b2798.js.map +1 -0
- package/dist/cjs/keyboard-9477d3a8.js +2 -0
- package/dist/cjs/keyboard-9477d3a8.js.map +1 -0
- package/dist/cjs/keycodes-3949f425.js +2 -0
- package/dist/cjs/keycodes-3949f425.js.map +1 -0
- package/dist/cjs/lime-elements.cjs.js +12 -3
- package/dist/cjs/lime-elements.cjs.js.map +1 -0
- package/dist/cjs/limel-action-bar-item_2.cjs.entry.js +3 -1
- package/dist/cjs/limel-action-bar-item_2.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-action-bar.cjs.entry.js +3 -1
- package/dist/cjs/limel-action-bar.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-badge.cjs.entry.js +3 -1
- package/dist/cjs/limel-badge.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-banner.cjs.entry.js +3 -1
- package/dist/cjs/limel-banner.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-button-group.cjs.entry.js +3 -1
- package/dist/cjs/limel-button-group.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-button.cjs.entry.js +3 -1
- package/dist/cjs/limel-button.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-callout.cjs.entry.js +3 -1
- package/dist/cjs/limel-callout.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-checkbox.cjs.entry.js +4 -2
- package/dist/cjs/limel-checkbox.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-chip-set.cjs.entry.js +3 -1
- package/dist/cjs/limel-chip-set.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-circular-progress_2.cjs.entry.js +3 -1
- package/dist/cjs/limel-circular-progress_2.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-code-editor.cjs.entry.js +3 -1
- package/dist/cjs/limel-code-editor.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-collapsible-section.cjs.entry.js +3 -1
- package/dist/cjs/limel-collapsible-section.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-color-picker-palette.cjs.entry.js +3 -1
- package/dist/cjs/limel-color-picker-palette.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-color-picker.cjs.entry.js +3 -1
- package/dist/cjs/limel-color-picker.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-config.cjs.entry.js +3 -1
- package/dist/cjs/limel-config.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-date-picker.cjs.entry.js +3 -1
- package/dist/cjs/limel-date-picker.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-dialog.cjs.entry.js +3 -1
- package/dist/cjs/limel-dialog.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-dock-button.cjs.entry.js +3 -1
- package/dist/cjs/limel-dock-button.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-dock.cjs.entry.js +3 -1
- package/dist/cjs/limel-dock.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-file.cjs.entry.js +3 -1
- package/dist/cjs/limel-file.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js +3 -1
- package/dist/cjs/limel-flatpickr-adapter.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-flex-container.cjs.entry.js +3 -1
- package/dist/cjs/limel-flex-container.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-form.cjs.entry.js +3 -1
- package/dist/cjs/limel-form.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-grid.cjs.entry.js +3 -1
- package/dist/cjs/limel-grid.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-header.cjs.entry.js +3 -1
- package/dist/cjs/limel-header.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-helper-line.cjs.entry.js +3 -1
- package/dist/cjs/limel-helper-line.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-icon-button.cjs.entry.js +3 -1
- package/dist/cjs/limel-icon-button.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-icon.cjs.entry.js +3 -1
- package/dist/cjs/limel-icon.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-info-tile.cjs.entry.js +3 -1
- package/dist/cjs/limel-info-tile.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-input-field.cjs.entry.js +3 -1
- package/dist/cjs/limel-input-field.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-list_2.cjs.entry.js +4 -2
- package/dist/cjs/limel-list_2.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-menu_2.cjs.entry.js +3 -1
- package/dist/cjs/limel-menu_2.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-picker.cjs.entry.js +3 -1
- package/dist/cjs/limel-picker.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-popover_2.cjs.entry.js +3 -1
- package/dist/cjs/limel-popover_2.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-portal.cjs.entry.js +15 -13
- package/dist/cjs/limel-portal.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-progress-flow-item.cjs.entry.js +3 -1
- package/dist/cjs/limel-progress-flow-item.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-progress-flow.cjs.entry.js +3 -1
- package/dist/cjs/limel-progress-flow.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-select.cjs.entry.js +3 -1
- package/dist/cjs/limel-select.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-shortcut.cjs.entry.js +3 -1
- package/dist/cjs/limel-shortcut.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-slider.cjs.entry.js +3 -1
- package/dist/cjs/limel-slider.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-snackbar.cjs.entry.js +3 -1
- package/dist/cjs/limel-snackbar.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-spinner.cjs.entry.js +3 -1
- package/dist/cjs/limel-spinner.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-split-button.cjs.entry.js +3 -1
- package/dist/cjs/limel-split-button.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-switch.cjs.entry.js +3 -1
- package/dist/cjs/limel-switch.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-tab-bar.cjs.entry.js +3 -1
- package/dist/cjs/limel-tab-bar.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-tab-panel.cjs.entry.js +3 -1
- package/dist/cjs/limel-tab-panel.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-table.cjs.entry.js +3 -1
- package/dist/cjs/limel-table.cjs.entry.js.map +1 -0
- package/dist/cjs/limel-tooltip_2.cjs.entry.js +3 -1
- package/dist/cjs/limel-tooltip_2.cjs.entry.js.map +1 -0
- package/dist/cjs/link-helper-4f75d41d.js +2 -0
- package/dist/cjs/link-helper-4f75d41d.js.map +1 -0
- package/dist/cjs/loader.cjs.js +6 -3
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/moment-d1e35cdc.js +2 -0
- package/dist/cjs/moment-d1e35cdc.js.map +1 -0
- package/dist/cjs/multiple-2af83b6d.js +2 -0
- package/dist/cjs/multiple-2af83b6d.js.map +1 -0
- package/dist/cjs/pickBy-3ef47bf2.js +2 -0
- package/dist/cjs/pickBy-3ef47bf2.js.map +1 -0
- package/dist/cjs/ponyfill-98ca4766.js +2 -0
- package/dist/cjs/ponyfill-98ca4766.js.map +1 -0
- package/dist/cjs/random-string-4c3b7f1c.js +2 -0
- package/dist/cjs/random-string-4c3b7f1c.js.map +1 -0
- package/dist/cjs/sv-dffe48b5.js +2 -0
- package/dist/cjs/sv-dffe48b5.js.map +1 -0
- package/dist/cjs/toNumber-062ea29c.js +2 -0
- package/dist/cjs/toNumber-062ea29c.js.map +1 -0
- package/dist/cjs/translations-f8080c48.js +2 -0
- package/dist/cjs/translations-f8080c48.js.map +1 -0
- package/dist/cjs/util-b0f5741e.js +2 -0
- package/dist/cjs/util-b0f5741e.js.map +1 -0
- package/dist/cjs/zipObject-93a471fa.js +2 -0
- package/dist/cjs/zipObject-93a471fa.js.map +1 -0
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/action-bar/action-bar-item/action-bar-item.js +1 -0
- package/dist/collection/components/action-bar/action-bar-item/action-bar-item.js.map +1 -0
- package/dist/collection/components/action-bar/action-bar-item/action-bar-overflow-menu.js +2 -1
- package/dist/collection/components/action-bar/action-bar-item/action-bar-overflow-menu.js.map +1 -0
- package/dist/collection/components/action-bar/action-bar.js +1 -0
- package/dist/collection/components/action-bar/action-bar.js.map +1 -0
- package/dist/collection/components/action-bar/action-bar.types.js +1 -0
- package/dist/collection/components/action-bar/action-bar.types.js.map +1 -0
- package/dist/collection/components/action-bar/isItem.js +1 -0
- package/dist/collection/components/action-bar/isItem.js.map +1 -0
- package/dist/collection/components/badge/badge.js +1 -0
- package/dist/collection/components/badge/badge.js.map +1 -0
- package/dist/collection/components/badge/format.js +1 -0
- package/dist/collection/components/badge/format.js.map +1 -0
- package/dist/collection/components/banner/banner.js +1 -0
- package/dist/collection/components/banner/banner.js.map +1 -0
- package/dist/collection/components/button/button.js +1 -0
- package/dist/collection/components/button/button.js.map +1 -0
- package/dist/collection/components/button/button.types.js +1 -0
- package/dist/collection/components/button/button.types.js.map +1 -0
- package/dist/collection/components/button-group/button-group.js +1 -0
- package/dist/collection/components/button-group/button-group.js.map +1 -0
- package/dist/collection/components/callout/callout.helpers.js +1 -0
- package/dist/collection/components/callout/callout.helpers.js.map +1 -0
- package/dist/collection/components/callout/callout.js +3 -2
- package/dist/collection/components/callout/callout.js.map +1 -0
- package/dist/collection/components/callout/callout.types.js +1 -0
- package/dist/collection/components/callout/callout.types.js.map +1 -0
- package/dist/collection/components/checkbox/checkbox.js +1 -0
- package/dist/collection/components/checkbox/checkbox.js.map +1 -0
- package/dist/collection/components/checkbox/checkbox.template.js +1 -0
- package/dist/collection/components/checkbox/checkbox.template.js.map +1 -0
- package/dist/collection/components/chip-set/chip-set-input-helpers.js +1 -0
- package/dist/collection/components/chip-set/chip-set-input-helpers.js.map +1 -0
- package/dist/collection/components/chip-set/chip-set.js +6 -5
- package/dist/collection/components/chip-set/chip-set.js.map +1 -0
- package/dist/collection/components/chip-set/chip.types.js +1 -0
- package/dist/collection/components/chip-set/chip.types.js.map +1 -0
- package/dist/collection/components/circular-progress/circular-progress.js +1 -0
- package/dist/collection/components/circular-progress/circular-progress.js.map +1 -0
- package/dist/collection/components/circular-progress/circular-progress.types.js +1 -0
- package/dist/collection/components/circular-progress/circular-progress.types.js.map +1 -0
- package/dist/collection/components/code-editor/code-editor.js +1 -0
- package/dist/collection/components/code-editor/code-editor.js.map +1 -0
- package/dist/collection/components/code-editor/code-editor.types.js +1 -0
- package/dist/collection/components/code-editor/code-editor.types.js.map +1 -0
- package/dist/collection/components/collapsible-section/action.js +1 -0
- package/dist/collection/components/collapsible-section/action.js.map +1 -0
- package/dist/collection/components/collapsible-section/collapsible-section.js +1 -0
- package/dist/collection/components/collapsible-section/collapsible-section.js.map +1 -0
- package/dist/collection/components/color-picker/color-picker-palette.js +1 -0
- package/dist/collection/components/color-picker/color-picker-palette.js.map +1 -0
- package/dist/collection/components/color-picker/color-picker.js +1 -0
- package/dist/collection/components/color-picker/color-picker.js.map +1 -0
- package/dist/collection/components/color-picker/swatches.js +1 -0
- package/dist/collection/components/color-picker/swatches.js.map +1 -0
- package/dist/collection/components/config/config.js +1 -0
- package/dist/collection/components/config/config.js.map +1 -0
- package/dist/collection/components/date-picker/date-picker.js +5 -4
- package/dist/collection/components/date-picker/date-picker.js.map +1 -0
- package/dist/collection/components/date-picker/date.types.js +1 -0
- package/dist/collection/components/date-picker/date.types.js.map +1 -0
- package/dist/collection/components/date-picker/dateFormatter.js +1 -0
- package/dist/collection/components/date-picker/dateFormatter.js.map +1 -0
- package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.js +5 -4
- package/dist/collection/components/date-picker/flatpickr-adapter/flatpickr-adapter.js.map +1 -0
- package/dist/collection/components/date-picker/pickers/DatePicker.js +1 -0
- package/dist/collection/components/date-picker/pickers/DatePicker.js.map +1 -0
- package/dist/collection/components/date-picker/pickers/DatetimePicker.js +1 -0
- package/dist/collection/components/date-picker/pickers/DatetimePicker.js.map +1 -0
- package/dist/collection/components/date-picker/pickers/MonthPicker.js +1 -0
- package/dist/collection/components/date-picker/pickers/MonthPicker.js.map +1 -0
- package/dist/collection/components/date-picker/pickers/Picker.js +1 -0
- package/dist/collection/components/date-picker/pickers/Picker.js.map +1 -0
- package/dist/collection/components/date-picker/pickers/QuarterPicker.js +1 -0
- package/dist/collection/components/date-picker/pickers/QuarterPicker.js.map +1 -0
- package/dist/collection/components/date-picker/pickers/TimePicker.js +1 -0
- package/dist/collection/components/date-picker/pickers/TimePicker.js.map +1 -0
- package/dist/collection/components/date-picker/pickers/WeekPicker.js +1 -0
- package/dist/collection/components/date-picker/pickers/WeekPicker.js.map +1 -0
- package/dist/collection/components/date-picker/pickers/YearPicker.js +1 -0
- package/dist/collection/components/date-picker/pickers/YearPicker.js.map +1 -0
- package/dist/collection/components/dialog/dialog.js +6 -3
- package/dist/collection/components/dialog/dialog.js.map +1 -0
- package/dist/collection/components/dialog/dialog.types.js +1 -0
- package/dist/collection/components/dialog/dialog.types.js.map +1 -0
- package/dist/collection/components/dock/dock-button/dock-button.js +1 -0
- package/dist/collection/components/dock/dock-button/dock-button.js.map +1 -0
- package/dist/collection/components/dock/dock.js +1 -0
- package/dist/collection/components/dock/dock.js.map +1 -0
- package/dist/collection/components/dock/dock.types.js +1 -0
- package/dist/collection/components/dock/dock.types.js.map +1 -0
- package/dist/collection/components/file/file-metadata.js +1 -0
- package/dist/collection/components/file/file-metadata.js.map +1 -0
- package/dist/collection/components/file/file.js +7 -4
- package/dist/collection/components/file/file.js.map +1 -0
- package/dist/collection/components/file/file.types.js +1 -0
- package/dist/collection/components/file/file.types.js.map +1 -0
- package/dist/collection/components/file/icon-background-colors.js +1 -0
- package/dist/collection/components/file/icon-background-colors.js.map +1 -0
- package/dist/collection/components/file/icon-fill-colors.js +1 -0
- package/dist/collection/components/file/icon-fill-colors.js.map +1 -0
- package/dist/collection/components/file/icons.js +1 -0
- package/dist/collection/components/file/icons.js.map +1 -0
- package/dist/collection/components/flex-container/flex-container.js +7 -6
- package/dist/collection/components/flex-container/flex-container.js.map +1 -0
- package/dist/collection/components/flex-container/flex-container.types.js +1 -0
- package/dist/collection/components/flex-container/flex-container.types.js.map +1 -0
- package/dist/collection/components/form/adapters/base-adapter.js +3 -1
- package/dist/collection/components/form/adapters/base-adapter.js.map +1 -0
- package/dist/collection/components/form/adapters/index.js +1 -0
- package/dist/collection/components/form/adapters/index.js.map +1 -0
- package/dist/collection/components/form/adapters/widget-adapter.js +1 -0
- package/dist/collection/components/form/adapters/widget-adapter.js.map +1 -0
- package/dist/collection/components/form/fields/array-field.js +1 -0
- package/dist/collection/components/form/fields/array-field.js.map +1 -0
- package/dist/collection/components/form/fields/field-helpers.js +1 -0
- package/dist/collection/components/form/fields/field-helpers.js.map +1 -0
- package/dist/collection/components/form/fields/object-field.js +1 -0
- package/dist/collection/components/form/fields/object-field.js.map +1 -0
- package/dist/collection/components/form/fields/schema-field.js +1 -0
- package/dist/collection/components/form/fields/schema-field.js.map +1 -0
- package/dist/collection/components/form/fields/types.js +1 -0
- package/dist/collection/components/form/fields/types.js.map +1 -0
- package/dist/collection/components/form/form.js +1 -0
- package/dist/collection/components/form/form.js.map +1 -0
- package/dist/collection/components/form/form.types.js +1 -0
- package/dist/collection/components/form/form.types.js.map +1 -0
- package/dist/collection/components/form/internal.types.js +1 -0
- package/dist/collection/components/form/internal.types.js.map +1 -0
- package/dist/collection/components/form/row/row.js +1 -0
- package/dist/collection/components/form/row/row.js.map +1 -0
- package/dist/collection/components/form/schema.js +1 -0
- package/dist/collection/components/form/schema.js.map +1 -0
- package/dist/collection/components/form/templates/array-field-collapsible-item.js +1 -0
- package/dist/collection/components/form/templates/array-field-collapsible-item.js.map +1 -0
- package/dist/collection/components/form/templates/array-field-simple-item.js +1 -0
- package/dist/collection/components/form/templates/array-field-simple-item.js.map +1 -0
- package/dist/collection/components/form/templates/array-field.js +1 -0
- package/dist/collection/components/form/templates/array-field.js.map +1 -0
- package/dist/collection/components/form/templates/common.js +1 -0
- package/dist/collection/components/form/templates/common.js.map +1 -0
- package/dist/collection/components/form/templates/field.js +1 -0
- package/dist/collection/components/form/templates/field.js.map +1 -0
- package/dist/collection/components/form/templates/grid-layout.js +1 -0
- package/dist/collection/components/form/templates/grid-layout.js.map +1 -0
- package/dist/collection/components/form/templates/index.js +1 -0
- package/dist/collection/components/form/templates/index.js.map +1 -0
- package/dist/collection/components/form/templates/object-field.js +1 -0
- package/dist/collection/components/form/templates/object-field.js.map +1 -0
- package/dist/collection/components/form/templates/row-layout.js +1 -0
- package/dist/collection/components/form/templates/row-layout.js.map +1 -0
- package/dist/collection/components/form/templates/types.js +1 -0
- package/dist/collection/components/form/templates/types.js.map +1 -0
- package/dist/collection/components/form/validators/format.js +1 -0
- package/dist/collection/components/form/validators/format.js.map +1 -0
- package/dist/collection/components/form/validators/index.js +1 -0
- package/dist/collection/components/form/validators/index.js.map +1 -0
- package/dist/collection/components/form/widgets/checkbox.js +1 -0
- package/dist/collection/components/form/widgets/checkbox.js.map +1 -0
- package/dist/collection/components/form/widgets/code-editor.js +1 -0
- package/dist/collection/components/form/widgets/code-editor.js.map +1 -0
- package/dist/collection/components/form/widgets/date-picker.js +1 -0
- package/dist/collection/components/form/widgets/date-picker.js.map +1 -0
- package/dist/collection/components/form/widgets/index.js +1 -0
- package/dist/collection/components/form/widgets/index.js.map +1 -0
- package/dist/collection/components/form/widgets/input-field.js +1 -0
- package/dist/collection/components/form/widgets/input-field.js.map +1 -0
- package/dist/collection/components/form/widgets/select.js +1 -0
- package/dist/collection/components/form/widgets/select.js.map +1 -0
- package/dist/collection/components/form/widgets/slider.js +1 -0
- package/dist/collection/components/form/widgets/slider.js.map +1 -0
- package/dist/collection/components/form/widgets/types.js +1 -0
- package/dist/collection/components/form/widgets/types.js.map +1 -0
- package/dist/collection/components/grid/grid.js +1 -0
- package/dist/collection/components/grid/grid.js.map +1 -0
- package/dist/collection/components/header/header.js +1 -0
- package/dist/collection/components/header/header.js.map +1 -0
- package/dist/collection/components/helper-line/helper-line.js +1 -0
- package/dist/collection/components/helper-line/helper-line.js.map +1 -0
- package/dist/collection/components/icon/icon.js +1 -0
- package/dist/collection/components/icon/icon.js.map +1 -0
- package/dist/collection/components/icon/icon.types.js +1 -0
- package/dist/collection/components/icon/icon.types.js.map +1 -0
- package/dist/collection/components/icon-button/icon-button.js +1 -0
- package/dist/collection/components/icon-button/icon-button.js.map +1 -0
- package/dist/collection/components/info-tile/info-tile.js +5 -2
- package/dist/collection/components/info-tile/info-tile.js.map +1 -0
- package/dist/collection/components/info-tile/info-tile.types.js +1 -0
- package/dist/collection/components/info-tile/info-tile.types.js.map +1 -0
- package/dist/collection/components/input-field/input-field.js +1 -0
- package/dist/collection/components/input-field/input-field.js.map +1 -0
- package/dist/collection/components/input-field/input-field.types.js +1 -0
- package/dist/collection/components/input-field/input-field.types.js.map +1 -0
- package/dist/collection/components/linear-progress/linear-progress.js +1 -0
- package/dist/collection/components/linear-progress/linear-progress.js.map +1 -0
- package/dist/collection/components/list/list-item.types.js +1 -0
- package/dist/collection/components/list/list-item.types.js.map +1 -0
- package/dist/collection/components/list/list-renderer-config.js +1 -0
- package/dist/collection/components/list/list-renderer-config.js.map +1 -0
- package/dist/collection/components/list/list-renderer.js +1 -0
- package/dist/collection/components/list/list-renderer.js.map +1 -0
- package/dist/collection/components/list/list.js +6 -5
- package/dist/collection/components/list/list.js.map +1 -0
- package/dist/collection/components/list/list.types.js +1 -0
- package/dist/collection/components/list/list.types.js.map +1 -0
- package/dist/collection/components/list/radio-button/radio-button.template.js +1 -0
- package/dist/collection/components/list/radio-button/radio-button.template.js.map +1 -0
- package/dist/collection/components/menu/menu.js +3 -2
- package/dist/collection/components/menu/menu.js.map +1 -0
- package/dist/collection/components/menu/menu.types.js +1 -0
- package/dist/collection/components/menu/menu.types.js.map +1 -0
- package/dist/collection/components/menu-list/menu-list-renderer-config.js +1 -0
- package/dist/collection/components/menu-list/menu-list-renderer-config.js.map +1 -0
- package/dist/collection/components/menu-list/menu-list-renderer.js +1 -0
- package/dist/collection/components/menu-list/menu-list-renderer.js.map +1 -0
- package/dist/collection/components/menu-list/menu-list.js +5 -4
- package/dist/collection/components/menu-list/menu-list.js.map +1 -0
- package/dist/collection/components/menu-list/menu-list.types.js +1 -0
- package/dist/collection/components/menu-list/menu-list.types.js.map +1 -0
- package/dist/collection/components/menu-surface/menu-surface.js +1 -0
- package/dist/collection/components/menu-surface/menu-surface.js.map +1 -0
- package/dist/collection/components/picker/actions.types.js +1 -0
- package/dist/collection/components/picker/actions.types.js.map +1 -0
- package/dist/collection/components/picker/picker.js +12 -7
- package/dist/collection/components/picker/picker.js.map +1 -0
- package/dist/collection/components/picker/searcher.types.js +1 -0
- package/dist/collection/components/picker/searcher.types.js.map +1 -0
- package/dist/collection/components/popover/popover.js +1 -0
- package/dist/collection/components/popover/popover.js.map +1 -0
- package/dist/collection/components/popover-surface/popover-surface.js +1 -0
- package/dist/collection/components/popover-surface/popover-surface.js.map +1 -0
- package/dist/collection/components/portal/contains.js +1 -0
- package/dist/collection/components/portal/contains.js.map +1 -0
- package/dist/collection/components/portal/portal.js +12 -11
- package/dist/collection/components/portal/portal.js.map +1 -0
- package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.js +1 -0
- package/dist/collection/components/progress-flow/progress-flow-item/progress-flow-item.js.map +1 -0
- package/dist/collection/components/progress-flow/progress-flow.js +1 -0
- package/dist/collection/components/progress-flow/progress-flow.js.map +1 -0
- package/dist/collection/components/progress-flow/progress-flow.types.js +1 -0
- package/dist/collection/components/progress-flow/progress-flow.types.js.map +1 -0
- package/dist/collection/components/select/option.types.js +1 -0
- package/dist/collection/components/select/option.types.js.map +1 -0
- package/dist/collection/components/select/select.js +8 -5
- package/dist/collection/components/select/select.js.map +1 -0
- package/dist/collection/components/select/select.template.js +1 -0
- package/dist/collection/components/select/select.template.js.map +1 -0
- package/dist/collection/components/shortcut/shortcut.js +5 -2
- package/dist/collection/components/shortcut/shortcut.js.map +1 -0
- package/dist/collection/components/slider/getPercentageClass.js +1 -0
- package/dist/collection/components/slider/getPercentageClass.js.map +1 -0
- package/dist/collection/components/slider/slider.js +1 -0
- package/dist/collection/components/slider/slider.js.map +1 -0
- package/dist/collection/components/snackbar/snackbar.js +3 -2
- package/dist/collection/components/snackbar/snackbar.js.map +1 -0
- package/dist/collection/components/spinner/spinner.js +3 -2
- package/dist/collection/components/spinner/spinner.js.map +1 -0
- package/dist/collection/components/spinner/spinner.types.js +1 -0
- package/dist/collection/components/spinner/spinner.types.js.map +1 -0
- package/dist/collection/components/split-button/split-button.js +3 -2
- package/dist/collection/components/split-button/split-button.js.map +1 -0
- package/dist/collection/components/switch/switch.js +1 -0
- package/dist/collection/components/switch/switch.js.map +1 -0
- package/dist/collection/components/tab-bar/tab-bar.js +1 -0
- package/dist/collection/components/tab-bar/tab-bar.js.map +1 -0
- package/dist/collection/components/tab-bar/tab.types.js +1 -0
- package/dist/collection/components/tab-bar/tab.types.js.map +1 -0
- package/dist/collection/components/tab-bar/tabs.js +1 -0
- package/dist/collection/components/tab-bar/tabs.js.map +1 -0
- package/dist/collection/components/tab-panel/tab-panel.js +1 -0
- package/dist/collection/components/tab-panel/tab-panel.js.map +1 -0
- package/dist/collection/components/tab-panel/tab-panel.types.js +1 -0
- package/dist/collection/components/tab-panel/tab-panel.types.js.map +1 -0
- package/dist/collection/components/table/columns.js +1 -0
- package/dist/collection/components/table/columns.js.map +1 -0
- package/dist/collection/components/table/element-pool.js +1 -0
- package/dist/collection/components/table/element-pool.js.map +1 -0
- package/dist/collection/components/table/layout.js +1 -0
- package/dist/collection/components/table/layout.js.map +1 -0
- package/dist/collection/components/table/selection.js +1 -0
- package/dist/collection/components/table/selection.js.map +1 -0
- package/dist/collection/components/table/table-selection.js +1 -0
- package/dist/collection/components/table/table-selection.js.map +1 -0
- package/dist/collection/components/table/table.js +1 -0
- package/dist/collection/components/table/table.js.map +1 -0
- package/dist/collection/components/table/table.types.js +1 -0
- package/dist/collection/components/table/table.types.js.map +1 -0
- package/dist/collection/components/tooltip/tooltip-content.js +1 -0
- package/dist/collection/components/tooltip/tooltip-content.js.map +1 -0
- package/dist/collection/components/tooltip/tooltip.js +1 -0
- package/dist/collection/components/tooltip/tooltip.js.map +1 -0
- package/dist/collection/global/config.js +1 -0
- package/dist/collection/global/config.js.map +1 -0
- package/dist/collection/global/icon-cache.js +1 -0
- package/dist/collection/global/icon-cache.js.map +1 -0
- package/dist/collection/global/shared-types/link.types.js +1 -0
- package/dist/collection/global/shared-types/link.types.js.map +1 -0
- package/dist/collection/global/translations.js +1 -0
- package/dist/collection/global/translations.js.map +1 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/translations/da.js +1 -0
- package/dist/collection/translations/da.js.map +1 -0
- package/dist/collection/translations/en.js +1 -0
- package/dist/collection/translations/en.js.map +1 -0
- package/dist/collection/translations/fi.js +1 -0
- package/dist/collection/translations/fi.js.map +1 -0
- package/dist/collection/translations/nl.js +1 -0
- package/dist/collection/translations/nl.js.map +1 -0
- package/dist/collection/translations/no.js +1 -0
- package/dist/collection/translations/no.js.map +1 -0
- package/dist/collection/translations/sv.js +1 -0
- package/dist/collection/translations/sv.js.map +1 -0
- package/dist/collection/util/device.js +1 -0
- package/dist/collection/util/device.js.map +1 -0
- package/dist/collection/util/dispatch-resize-event.js +1 -0
- package/dist/collection/util/dispatch-resize-event.js.map +1 -0
- package/dist/collection/util/dom.js +1 -0
- package/dist/collection/util/dom.js.map +1 -0
- package/dist/collection/util/keycodes.js +1 -0
- package/dist/collection/util/keycodes.js.map +1 -0
- package/dist/collection/util/link-helper.js +1 -0
- package/dist/collection/util/link-helper.js.map +1 -0
- package/dist/collection/util/multiple.js +1 -0
- package/dist/collection/util/multiple.js.map +1 -0
- package/dist/collection/util/random-string.js +1 -0
- package/dist/collection/util/random-string.js.map +1 -0
- package/dist/esm/_arrayIncludesWith-969bccda.js +2 -0
- package/dist/esm/_arrayIncludesWith-969bccda.js.map +1 -0
- package/dist/esm/_assignValue-fb2bf80a.js +2 -0
- package/dist/esm/_assignValue-fb2bf80a.js.map +1 -0
- package/dist/esm/_commonjsHelpers-5ec8f9b7.js +2 -0
- package/dist/esm/_commonjsHelpers-5ec8f9b7.js.map +1 -0
- package/dist/esm/_defineProperty-2105cb48.js +2 -0
- package/dist/esm/_defineProperty-2105cb48.js.map +1 -0
- package/dist/esm/_getNative-93d6bfe9.js +2 -0
- package/dist/esm/_getNative-93d6bfe9.js.map +1 -0
- package/dist/esm/animationframe-b52af02d.js +2 -0
- package/dist/esm/animationframe-b52af02d.js.map +1 -0
- package/dist/esm/{checkbox.template-4ce8d92f.js → checkbox.template-c838ee7b.js} +3 -1
- package/dist/esm/checkbox.template-c838ee7b.js.map +1 -0
- package/dist/esm/component-19eb6e2b.js +2 -0
- package/dist/esm/component-19eb6e2b.js.map +1 -0
- package/dist/esm/component-288691f3.js +2 -0
- package/dist/esm/component-288691f3.js.map +1 -0
- package/dist/esm/component-410aad5a.js +2 -0
- package/dist/esm/component-410aad5a.js.map +1 -0
- package/dist/esm/component-5b4ac85a.js +2 -0
- package/dist/esm/component-5b4ac85a.js.map +1 -0
- package/dist/esm/component-fffa3419.js +2 -0
- package/dist/esm/component-fffa3419.js.map +1 -0
- package/dist/esm/config-f7362aeb.js +2 -0
- package/dist/esm/config-f7362aeb.js.map +1 -0
- package/dist/esm/device-39db3b5f.js +2 -0
- package/dist/esm/device-39db3b5f.js.map +1 -0
- package/dist/esm/dispatch-resize-event-cd1d230c.js +2 -0
- package/dist/esm/dispatch-resize-event-cd1d230c.js.map +1 -0
- package/dist/esm/dom-2fe617e7.js +2 -0
- package/dist/esm/dom-2fe617e7.js.map +1 -0
- package/dist/esm/eq-c1c7f528.js +2 -0
- package/dist/esm/eq-c1c7f528.js.map +1 -0
- package/dist/esm/format-c76733cb.js +2 -0
- package/dist/esm/format-c76733cb.js.map +1 -0
- package/dist/esm/identity-87aa3962.js +2 -0
- package/dist/esm/identity-87aa3962.js.map +1 -0
- package/dist/esm/{index-cdfd351d.js → index-9bd6d7c6.js} +209 -24
- package/dist/esm/index-9bd6d7c6.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/isArray-80298bc7.js +2 -0
- package/dist/esm/isArray-80298bc7.js.map +1 -0
- package/dist/esm/isArrayLike-385e0f31.js +2 -0
- package/dist/esm/isArrayLike-385e0f31.js.map +1 -0
- package/dist/esm/isEqual-c5a636a4.js +2 -0
- package/dist/esm/isEqual-c5a636a4.js.map +1 -0
- package/dist/esm/isObject-c74e273c.js +2 -0
- package/dist/esm/isObject-c74e273c.js.map +1 -0
- package/dist/esm/isObjectLike-38996507.js +2 -0
- package/dist/esm/isObjectLike-38996507.js.map +1 -0
- package/dist/esm/isSymbol-5bf20921.js +2 -0
- package/dist/esm/isSymbol-5bf20921.js.map +1 -0
- package/dist/esm/keyboard-4b9e12e3.js +2 -0
- package/dist/esm/keyboard-4b9e12e3.js.map +1 -0
- package/dist/esm/keycodes-44c01beb.js +2 -0
- package/dist/esm/keycodes-44c01beb.js.map +1 -0
- package/dist/esm/lime-elements.js +9 -3
- package/dist/esm/lime-elements.js.map +1 -0
- package/dist/esm/limel-action-bar-item_2.entry.js +3 -1
- package/dist/esm/limel-action-bar-item_2.entry.js.map +1 -0
- package/dist/esm/limel-action-bar.entry.js +3 -1
- package/dist/esm/limel-action-bar.entry.js.map +1 -0
- package/dist/esm/limel-badge.entry.js +3 -1
- package/dist/esm/limel-badge.entry.js.map +1 -0
- package/dist/esm/limel-banner.entry.js +3 -1
- package/dist/esm/limel-banner.entry.js.map +1 -0
- package/dist/esm/limel-button-group.entry.js +3 -1
- package/dist/esm/limel-button-group.entry.js.map +1 -0
- package/dist/esm/limel-button.entry.js +3 -1
- package/dist/esm/limel-button.entry.js.map +1 -0
- package/dist/esm/limel-callout.entry.js +3 -1
- package/dist/esm/limel-callout.entry.js.map +1 -0
- package/dist/esm/limel-checkbox.entry.js +4 -2
- package/dist/esm/limel-checkbox.entry.js.map +1 -0
- package/dist/esm/limel-chip-set.entry.js +3 -1
- package/dist/esm/limel-chip-set.entry.js.map +1 -0
- package/dist/esm/limel-circular-progress_2.entry.js +3 -1
- package/dist/esm/limel-circular-progress_2.entry.js.map +1 -0
- package/dist/esm/limel-code-editor.entry.js +3 -1
- package/dist/esm/limel-code-editor.entry.js.map +1 -0
- package/dist/esm/limel-collapsible-section.entry.js +3 -1
- package/dist/esm/limel-collapsible-section.entry.js.map +1 -0
- package/dist/esm/limel-color-picker-palette.entry.js +3 -1
- package/dist/esm/limel-color-picker-palette.entry.js.map +1 -0
- package/dist/esm/limel-color-picker.entry.js +3 -1
- package/dist/esm/limel-color-picker.entry.js.map +1 -0
- package/dist/esm/limel-config.entry.js +3 -1
- package/dist/esm/limel-config.entry.js.map +1 -0
- package/dist/esm/limel-date-picker.entry.js +3 -1
- package/dist/esm/limel-date-picker.entry.js.map +1 -0
- package/dist/esm/limel-dialog.entry.js +3 -1
- package/dist/esm/limel-dialog.entry.js.map +1 -0
- package/dist/esm/limel-dock-button.entry.js +3 -1
- package/dist/esm/limel-dock-button.entry.js.map +1 -0
- package/dist/esm/limel-dock.entry.js +3 -1
- package/dist/esm/limel-dock.entry.js.map +1 -0
- package/dist/esm/limel-file.entry.js +3 -1
- package/dist/esm/limel-file.entry.js.map +1 -0
- package/dist/esm/limel-flatpickr-adapter.entry.js +3 -1
- package/dist/esm/limel-flatpickr-adapter.entry.js.map +1 -0
- package/dist/esm/limel-flex-container.entry.js +3 -1
- package/dist/esm/limel-flex-container.entry.js.map +1 -0
- package/dist/esm/limel-form.entry.js +3 -1
- package/dist/esm/limel-form.entry.js.map +1 -0
- package/dist/esm/limel-grid.entry.js +3 -1
- package/dist/esm/limel-grid.entry.js.map +1 -0
- package/dist/esm/limel-header.entry.js +3 -1
- package/dist/esm/limel-header.entry.js.map +1 -0
- package/dist/esm/limel-helper-line.entry.js +3 -1
- package/dist/esm/limel-helper-line.entry.js.map +1 -0
- package/dist/esm/limel-icon-button.entry.js +3 -1
- package/dist/esm/limel-icon-button.entry.js.map +1 -0
- package/dist/esm/limel-icon.entry.js +3 -1
- package/dist/esm/limel-icon.entry.js.map +1 -0
- package/dist/esm/limel-info-tile.entry.js +3 -1
- package/dist/esm/limel-info-tile.entry.js.map +1 -0
- package/dist/esm/limel-input-field.entry.js +3 -1
- package/dist/esm/limel-input-field.entry.js.map +1 -0
- package/dist/esm/limel-list_2.entry.js +4 -2
- package/dist/esm/limel-list_2.entry.js.map +1 -0
- package/dist/esm/limel-menu_2.entry.js +3 -1
- package/dist/esm/limel-menu_2.entry.js.map +1 -0
- package/dist/esm/limel-picker.entry.js +3 -1
- package/dist/esm/limel-picker.entry.js.map +1 -0
- package/dist/esm/limel-popover_2.entry.js +3 -1
- package/dist/esm/limel-popover_2.entry.js.map +1 -0
- package/dist/esm/limel-portal.entry.js +15 -13
- package/dist/esm/limel-portal.entry.js.map +1 -0
- package/dist/esm/limel-progress-flow-item.entry.js +3 -1
- package/dist/esm/limel-progress-flow-item.entry.js.map +1 -0
- package/dist/esm/limel-progress-flow.entry.js +3 -1
- package/dist/esm/limel-progress-flow.entry.js.map +1 -0
- package/dist/esm/limel-select.entry.js +3 -1
- package/dist/esm/limel-select.entry.js.map +1 -0
- package/dist/esm/limel-shortcut.entry.js +3 -1
- package/dist/esm/limel-shortcut.entry.js.map +1 -0
- package/dist/esm/limel-slider.entry.js +3 -1
- package/dist/esm/limel-slider.entry.js.map +1 -0
- package/dist/esm/limel-snackbar.entry.js +3 -1
- package/dist/esm/limel-snackbar.entry.js.map +1 -0
- package/dist/esm/limel-spinner.entry.js +3 -1
- package/dist/esm/limel-spinner.entry.js.map +1 -0
- package/dist/esm/limel-split-button.entry.js +3 -1
- package/dist/esm/limel-split-button.entry.js.map +1 -0
- package/dist/esm/limel-switch.entry.js +3 -1
- package/dist/esm/limel-switch.entry.js.map +1 -0
- package/dist/esm/limel-tab-bar.entry.js +3 -1
- package/dist/esm/limel-tab-bar.entry.js.map +1 -0
- package/dist/esm/limel-tab-panel.entry.js +3 -1
- package/dist/esm/limel-tab-panel.entry.js.map +1 -0
- package/dist/esm/limel-table.entry.js +3 -1
- package/dist/esm/limel-table.entry.js.map +1 -0
- package/dist/esm/limel-tooltip_2.entry.js +3 -1
- package/dist/esm/limel-tooltip_2.entry.js.map +1 -0
- package/dist/esm/link-helper-b08fe56c.js +2 -0
- package/dist/esm/link-helper-b08fe56c.js.map +1 -0
- package/dist/esm/loader.js +6 -3
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/moment-faa8a4a8.js +2 -0
- package/dist/esm/moment-faa8a4a8.js.map +1 -0
- package/dist/esm/multiple-0bd62427.js +2 -0
- package/dist/esm/multiple-0bd62427.js.map +1 -0
- package/dist/esm/pickBy-d359eb12.js +2 -0
- package/dist/esm/pickBy-d359eb12.js.map +1 -0
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/ponyfill-30263d5e.js +2 -0
- package/dist/esm/ponyfill-30263d5e.js.map +1 -0
- package/dist/esm/random-string-2246b81e.js +2 -0
- package/dist/esm/random-string-2246b81e.js.map +1 -0
- package/dist/esm/sv-336c4576.js +2 -0
- package/dist/esm/sv-336c4576.js.map +1 -0
- package/dist/esm/toNumber-a6ed64f0.js +2 -0
- package/dist/esm/toNumber-a6ed64f0.js.map +1 -0
- package/dist/esm/translations-f88bb584.js +2 -0
- package/dist/esm/translations-f88bb584.js.map +1 -0
- package/dist/esm/util-f1bde91c.js +2 -0
- package/dist/esm/util-f1bde91c.js.map +1 -0
- package/dist/esm/zipObject-2bb1968e.js +2 -0
- package/dist/esm/zipObject-2bb1968e.js.map +1 -0
- package/dist/lime-elements/index.esm.js +2 -0
- package/dist/lime-elements/index.esm.js.map +1 -0
- package/dist/lime-elements/lime-elements.esm.js +2 -1
- package/dist/lime-elements/lime-elements.esm.js.map +1 -0
- package/dist/lime-elements/p-0137d2fb.entry.js +2 -0
- package/dist/lime-elements/p-0137d2fb.entry.js.map +1 -0
- package/dist/lime-elements/p-0b1af919.js +2 -1
- package/dist/lime-elements/p-0b1af919.js.map +1 -0
- package/dist/lime-elements/p-0eabb204.js +2 -1
- package/dist/lime-elements/p-0eabb204.js.map +1 -0
- package/dist/lime-elements/p-13ed01eb.entry.js +236 -0
- package/dist/lime-elements/p-13ed01eb.entry.js.map +1 -0
- package/dist/lime-elements/p-17ac8cca.entry.js +2 -0
- package/dist/lime-elements/p-17ac8cca.entry.js.map +1 -0
- package/dist/lime-elements/p-1a80da5e.entry.js +104 -0
- package/dist/lime-elements/p-1a80da5e.entry.js.map +1 -0
- package/dist/lime-elements/p-1c284626.js +372 -5
- package/dist/lime-elements/p-1c284626.js.map +1 -0
- package/dist/lime-elements/p-1dc042e5.entry.js +2 -0
- package/dist/lime-elements/p-1dc042e5.entry.js.map +1 -0
- package/dist/lime-elements/p-2118b9ae.entry.js +2 -0
- package/dist/lime-elements/p-2118b9ae.entry.js.map +1 -0
- package/dist/lime-elements/p-2359d139.entry.js +82 -0
- package/dist/lime-elements/p-2359d139.entry.js.map +1 -0
- package/dist/lime-elements/p-240fda3b.js +2 -1
- package/dist/lime-elements/p-240fda3b.js.map +1 -0
- package/dist/lime-elements/p-2565927b.entry.js +21 -0
- package/dist/lime-elements/p-2565927b.entry.js.map +1 -0
- package/dist/lime-elements/p-28da3c47.entry.js +2 -0
- package/dist/lime-elements/p-28da3c47.entry.js.map +1 -0
- package/dist/lime-elements/p-2b0c6ccd.entry.js +17 -0
- package/dist/lime-elements/p-2b0c6ccd.entry.js.map +1 -0
- package/dist/lime-elements/p-2f71d4d4.js +2 -1
- package/dist/lime-elements/p-2f71d4d4.js.map +1 -0
- package/dist/lime-elements/p-30df2bb6.entry.js +2 -0
- package/dist/lime-elements/p-30df2bb6.entry.js.map +1 -0
- package/dist/lime-elements/p-365098fe.js +2 -1
- package/dist/lime-elements/p-365098fe.js.map +1 -0
- package/dist/lime-elements/p-3670f018.entry.js +2 -0
- package/dist/lime-elements/p-3670f018.entry.js.map +1 -0
- package/dist/lime-elements/p-40b7d717.entry.js +2 -0
- package/dist/lime-elements/p-40b7d717.entry.js.map +1 -0
- package/dist/lime-elements/p-4114c214.entry.js +82 -0
- package/dist/lime-elements/p-4114c214.entry.js.map +1 -0
- package/dist/lime-elements/p-42a24572.entry.js +2 -0
- package/dist/lime-elements/p-42a24572.entry.js.map +1 -0
- package/dist/lime-elements/p-48105d44.js +2 -1
- package/dist/lime-elements/p-48105d44.js.map +1 -0
- package/dist/lime-elements/p-48d4ef20.js +4 -3
- package/dist/lime-elements/p-48d4ef20.js.map +1 -0
- package/dist/lime-elements/p-4c3358cb.js +2 -1
- package/dist/lime-elements/p-4c3358cb.js.map +1 -0
- package/dist/lime-elements/p-4dd9a5a5.js +12 -5
- package/dist/lime-elements/p-4dd9a5a5.js.map +1 -0
- package/dist/lime-elements/p-4ed75a11.entry.js +162 -0
- package/dist/lime-elements/p-4ed75a11.entry.js.map +1 -0
- package/dist/lime-elements/p-4ef9aa7d.entry.js +104 -0
- package/dist/lime-elements/p-4ef9aa7d.entry.js.map +1 -0
- package/dist/lime-elements/p-55a09930.entry.js +126 -0
- package/dist/lime-elements/p-55a09930.entry.js.map +1 -0
- package/dist/lime-elements/p-5b374246.entry.js +476 -0
- package/dist/lime-elements/p-5b374246.entry.js.map +1 -0
- package/dist/lime-elements/p-5b6d2d55.js +2 -0
- package/dist/lime-elements/p-5b6d2d55.js.map +1 -0
- package/dist/lime-elements/p-5f020b3c.js +2 -1
- package/dist/lime-elements/p-5f020b3c.js.map +1 -0
- package/dist/lime-elements/p-5fdb83c9.js +2 -1
- package/dist/lime-elements/p-5fdb83c9.js.map +1 -0
- package/dist/lime-elements/p-623d09d9.entry.js +2 -0
- package/dist/lime-elements/p-623d09d9.entry.js.map +1 -0
- package/dist/lime-elements/p-63111b62.entry.js +2 -0
- package/dist/lime-elements/p-63111b62.entry.js.map +1 -0
- package/dist/lime-elements/p-648d9057.entry.js +2 -0
- package/dist/lime-elements/p-648d9057.entry.js.map +1 -0
- package/dist/lime-elements/p-669626e5.js +2 -1
- package/dist/lime-elements/p-669626e5.js.map +1 -0
- package/dist/lime-elements/p-6b952164.entry.js +2 -0
- package/dist/lime-elements/p-6b952164.entry.js.map +1 -0
- package/dist/lime-elements/p-6c094f3f.js +2 -1
- package/dist/lime-elements/p-6c094f3f.js.map +1 -0
- package/dist/lime-elements/p-6e219bb4.js +2 -1
- package/dist/lime-elements/p-6e219bb4.js.map +1 -0
- package/dist/lime-elements/p-715d3252.entry.js +2 -0
- package/dist/lime-elements/p-715d3252.entry.js.map +1 -0
- package/dist/lime-elements/p-753f500b.entry.js +82 -0
- package/dist/lime-elements/p-753f500b.entry.js.map +1 -0
- package/dist/lime-elements/p-795079c9.entry.js +2 -0
- package/dist/lime-elements/p-795079c9.entry.js.map +1 -0
- package/dist/lime-elements/p-7a3f58cd.entry.js +2 -0
- package/dist/lime-elements/p-7a3f58cd.entry.js.map +1 -0
- package/dist/lime-elements/p-7cda574b.js +2 -1
- package/dist/lime-elements/p-7cda574b.js.map +1 -0
- package/dist/lime-elements/p-848437f8.entry.js +2 -0
- package/dist/lime-elements/p-848437f8.entry.js.map +1 -0
- package/dist/lime-elements/p-858c6b82.js +2 -1
- package/dist/lime-elements/p-858c6b82.js.map +1 -0
- package/dist/lime-elements/p-896043d6.entry.js +2 -0
- package/dist/lime-elements/p-896043d6.entry.js.map +1 -0
- package/dist/lime-elements/p-8b339748.entry.js +2 -0
- package/dist/lime-elements/p-8b339748.entry.js.map +1 -0
- package/dist/lime-elements/p-945afca2.js +3 -2
- package/dist/lime-elements/p-945afca2.js.map +1 -0
- package/dist/lime-elements/p-9aab2892.entry.js +2 -0
- package/dist/lime-elements/p-9aab2892.entry.js.map +1 -0
- package/dist/lime-elements/p-9acf7b5d.js +2 -1
- package/dist/lime-elements/p-9acf7b5d.js.map +1 -0
- package/dist/lime-elements/p-9e78a21c.entry.js +16 -0
- package/dist/lime-elements/p-9e78a21c.entry.js.map +1 -0
- package/dist/lime-elements/p-9faad6eb.js +2 -1
- package/dist/lime-elements/p-9faad6eb.js.map +1 -0
- package/dist/lime-elements/p-9fe3bc64.entry.js +2 -0
- package/dist/lime-elements/p-9fe3bc64.entry.js.map +1 -0
- package/dist/lime-elements/p-a11a971e.entry.js +2 -0
- package/dist/lime-elements/p-a11a971e.entry.js.map +1 -0
- package/dist/lime-elements/p-a3bea367.entry.js +2 -0
- package/dist/lime-elements/p-a3bea367.entry.js.map +1 -0
- package/dist/lime-elements/p-a40e05c3.entry.js +2 -0
- package/dist/lime-elements/p-a40e05c3.entry.js.map +1 -0
- package/dist/lime-elements/p-a8714655.entry.js +2 -0
- package/dist/lime-elements/p-a8714655.entry.js.map +1 -0
- package/dist/lime-elements/p-acf307d9.js +2 -1
- package/dist/lime-elements/p-acf307d9.js.map +1 -0
- package/dist/lime-elements/p-ad8cb388.js +2 -1
- package/dist/lime-elements/p-ad8cb388.js.map +1 -0
- package/dist/lime-elements/p-ade76f1d.js +2 -1
- package/dist/lime-elements/p-ade76f1d.js.map +1 -0
- package/dist/lime-elements/p-b28128d2.js +2 -1
- package/dist/lime-elements/p-b28128d2.js.map +1 -0
- package/dist/lime-elements/p-b59e4287.js +2 -1
- package/dist/lime-elements/p-b59e4287.js.map +1 -0
- package/dist/lime-elements/p-b8ed25b3.entry.js +2 -0
- package/dist/lime-elements/p-b8ed25b3.entry.js.map +1 -0
- package/dist/lime-elements/p-c647b197.entry.js +2 -0
- package/dist/lime-elements/p-c647b197.entry.js.map +1 -0
- package/dist/lime-elements/p-c70b1ea3.js +2 -1
- package/dist/lime-elements/p-c70b1ea3.js.map +1 -0
- package/dist/lime-elements/p-c8818b66.js +3 -0
- package/dist/lime-elements/p-c8818b66.js.map +1 -0
- package/dist/lime-elements/p-c93050d6.js +2 -1
- package/dist/lime-elements/p-c93050d6.js.map +1 -0
- package/dist/lime-elements/p-ca9b383b.entry.js +2 -0
- package/dist/lime-elements/p-ca9b383b.entry.js.map +1 -0
- package/dist/lime-elements/p-cbc43682.js +27 -4
- package/dist/lime-elements/p-cbc43682.js.map +1 -0
- package/dist/lime-elements/p-cc9ebbef.js +2 -1
- package/dist/lime-elements/p-cc9ebbef.js.map +1 -0
- package/dist/lime-elements/p-d07f1a1f.entry.js +2 -0
- package/dist/lime-elements/p-d07f1a1f.entry.js.map +1 -0
- package/dist/lime-elements/p-d0a7de87.js +48 -3
- package/dist/lime-elements/p-d0a7de87.js.map +1 -0
- package/dist/lime-elements/p-d228fd62.entry.js +2 -0
- package/dist/lime-elements/p-d228fd62.entry.js.map +1 -0
- package/dist/lime-elements/p-d529bb7d.js +2 -1
- package/dist/lime-elements/p-d529bb7d.js.map +1 -0
- package/dist/lime-elements/p-d7801e00.js +2 -1
- package/dist/lime-elements/p-d7801e00.js.map +1 -0
- package/dist/lime-elements/p-d7c39d02.entry.js +126 -0
- package/dist/lime-elements/p-d7c39d02.entry.js.map +1 -0
- package/dist/lime-elements/p-da25e94d.entry.js +2 -0
- package/dist/lime-elements/p-da25e94d.entry.js.map +1 -0
- package/dist/lime-elements/p-dcc97cc2.js +2 -1
- package/dist/lime-elements/p-dcc97cc2.js.map +1 -0
- package/dist/lime-elements/p-dfba92de.js +88 -8
- package/dist/lime-elements/p-dfba92de.js.map +1 -0
- package/dist/lime-elements/p-e0fa49ca.entry.js +2 -0
- package/dist/lime-elements/p-e0fa49ca.entry.js.map +1 -0
- package/dist/lime-elements/p-e59e0040.entry.js +2 -0
- package/dist/lime-elements/p-e59e0040.entry.js.map +1 -0
- package/dist/lime-elements/p-eab67c09.js +2 -1
- package/dist/lime-elements/p-eab67c09.js.map +1 -0
- package/dist/lime-elements/p-eda23c05.js +2 -1
- package/dist/lime-elements/p-eda23c05.js.map +1 -0
- package/dist/lime-elements/p-f1d9723a.entry.js +2 -0
- package/dist/lime-elements/p-f1d9723a.entry.js.map +1 -0
- package/dist/lime-elements/p-fa607ed3.js +2 -1
- package/dist/lime-elements/p-fa607ed3.js.map +1 -0
- package/dist/lime-elements/p-fb799569.entry.js +2 -0
- package/dist/lime-elements/p-fb799569.entry.js.map +1 -0
- package/dist/loader/index.d.ts +9 -0
- package/dist/types/components/callout/callout.types.d.ts +1 -1
- package/dist/types/components/circular-progress/circular-progress.types.d.ts +1 -1
- package/dist/types/components/code-editor/code-editor.types.d.ts +2 -2
- package/dist/types/components/date-picker/date.types.d.ts +2 -2
- package/dist/types/components/file/file-metadata.d.ts +5 -5
- package/dist/types/components/flex-container/flex-container.types.d.ts +3 -3
- package/dist/types/components/form/form.types.d.ts +1 -1
- package/dist/types/components/form/templates/types.d.ts +3 -3
- package/dist/types/components/form/widgets/index.d.ts +1 -1
- package/dist/types/components/icon/icon.types.d.ts +1 -1
- package/dist/types/components/input-field/input-field.types.d.ts +1 -1
- package/dist/types/components/list/list.types.d.ts +1 -1
- package/dist/types/components/menu/menu.types.d.ts +1 -1
- package/dist/types/components/menu-list/menu-list.types.d.ts +1 -1
- package/dist/types/components/picker/actions.types.d.ts +2 -2
- package/dist/types/components/picker/searcher.types.d.ts +1 -1
- package/dist/types/components/spinner/spinner.types.d.ts +1 -1
- package/dist/types/components/table/layout.d.ts +1 -1
- package/dist/types/components/table/table.types.d.ts +2 -2
- package/dist/types/components.d.ts +2848 -0
- package/dist/types/interface.d.ts +5 -14
- package/dist/types/stencil-public-runtime.d.ts +74 -15
- package/package.json +2 -2
- package/dist/lime-elements/p-076de623.entry.js +0 -1
- package/dist/lime-elements/p-07dd6729.entry.js +0 -1
- package/dist/lime-elements/p-094dd76a.entry.js +0 -126
- package/dist/lime-elements/p-10e259de.entry.js +0 -1
- package/dist/lime-elements/p-123f5fbb.entry.js +0 -1
- package/dist/lime-elements/p-29350441.entry.js +0 -37
- package/dist/lime-elements/p-30f5cc4d.entry.js +0 -1
- package/dist/lime-elements/p-35a6ab13.entry.js +0 -1
- package/dist/lime-elements/p-3618f8be.entry.js +0 -1
- package/dist/lime-elements/p-3be2dfc7.entry.js +0 -1
- package/dist/lime-elements/p-3cdc210b.entry.js +0 -1
- package/dist/lime-elements/p-3fda3473.entry.js +0 -1
- package/dist/lime-elements/p-46a76d55.entry.js +0 -1
- package/dist/lime-elements/p-4a62273c.entry.js +0 -1
- package/dist/lime-elements/p-4eeabc1f.entry.js +0 -1
- package/dist/lime-elements/p-5338663b.entry.js +0 -1
- package/dist/lime-elements/p-55900379.entry.js +0 -59
- package/dist/lime-elements/p-55c8cb64.entry.js +0 -131
- package/dist/lime-elements/p-6b8142ba.entry.js +0 -73
- package/dist/lime-elements/p-6c38b505.entry.js +0 -1
- package/dist/lime-elements/p-727fd4ea.entry.js +0 -38
- package/dist/lime-elements/p-7719a91d.entry.js +0 -1
- package/dist/lime-elements/p-79049482.entry.js +0 -1
- package/dist/lime-elements/p-7d7d19de.entry.js +0 -1
- package/dist/lime-elements/p-803cc4b7.entry.js +0 -1
- package/dist/lime-elements/p-82cd7bb6.entry.js +0 -1
- package/dist/lime-elements/p-8a2d1761.entry.js +0 -11
- package/dist/lime-elements/p-8acabe02.entry.js +0 -59
- package/dist/lime-elements/p-9336fd7f.entry.js +0 -1
- package/dist/lime-elements/p-95cefb5f.entry.js +0 -1
- package/dist/lime-elements/p-a3acc38f.entry.js +0 -83
- package/dist/lime-elements/p-a5d5efc4.entry.js +0 -1
- package/dist/lime-elements/p-b0bfec52.entry.js +0 -1
- package/dist/lime-elements/p-b40f37d7.entry.js +0 -1
- package/dist/lime-elements/p-b526ebd4.entry.js +0 -1
- package/dist/lime-elements/p-b80de0ea.entry.js +0 -1
- package/dist/lime-elements/p-bf3d6097.entry.js +0 -1
- package/dist/lime-elements/p-c6e913a4.entry.js +0 -82
- package/dist/lime-elements/p-cb2c9562.entry.js +0 -16
- package/dist/lime-elements/p-cc3529bb.entry.js +0 -82
- package/dist/lime-elements/p-cfaa685f.entry.js +0 -1
- package/dist/lime-elements/p-d2a3d50b.js +0 -1
- package/dist/lime-elements/p-d4e788e1.js +0 -2
- package/dist/lime-elements/p-d55d88a5.entry.js +0 -1
- package/dist/lime-elements/p-da4d1bc1.entry.js +0 -16
- package/dist/lime-elements/p-eda87f8c.entry.js +0 -1
- package/dist/lime-elements/p-edbd8d62.entry.js +0 -1
- package/dist/lime-elements/p-ef93fd3e.entry.js +0 -1
- package/dist/lime-elements/p-f11e7ce1.entry.js +0 -1
- package/dist/lime-elements/p-f979c0f2.entry.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"limel-table.entry.js","mappings":"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","names":["TabulatorTable"],"sources":["./node_modules/tabulator-tables/dist/js/tabulator.es2015.js","./node_modules/html-escaper/esm/index.js","./src/components/table/columns.ts","./src/components/table/element-pool.ts","./src/components/table/selection.ts","./src/components/table/table-selection.ts","./src/components/table/layout.ts","./src/components/table/table.scss?tag=limel-table&encapsulation=shadow","./src/components/table/table.tsx"],"sourcesContent":["/* Tabulator v4.9.3 (c) Oliver Folkerd */\n\n'use strict';\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nif (!Array.prototype.findIndex) {\n\n\tObject.defineProperty(Array.prototype, 'findIndex', {\n\n\t\tvalue: function value(predicate) {\n\n\t\t\t// 1. Let O be ? ToObject(this value).\n\n\t\t\tif (this == null) {\n\n\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t}\n\n\t\t\tvar o = Object(this);\n\n\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\t\t\tvar len = o.length >>> 0;\n\n\t\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\n\t\t\tif (typeof predicate !== 'function') {\n\n\t\t\t\tthrow new TypeError('predicate must be a function');\n\t\t\t}\n\n\t\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\t\t\tvar thisArg = arguments[1];\n\n\t\t\t// 5. Let k be 0.\n\n\t\t\tvar k = 0;\n\n\t\t\t// 6. Repeat, while k < len\n\n\t\t\twhile (k < len) {\n\n\t\t\t\t// a. Let Pk be ! ToString(k).\n\n\t\t\t\t// b. Let kValue be ? Get(O, Pk).\n\n\t\t\t\t// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\n\t\t\t\t// d. If testResult is true, return k.\n\n\t\t\t\tvar kValue = o[k];\n\n\t\t\t\tif (predicate.call(thisArg, kValue, k, o)) {\n\n\t\t\t\t\treturn k;\n\t\t\t\t}\n\n\t\t\t\t// e. Increase k by 1.\n\n\t\t\t\tk++;\n\t\t\t}\n\n\t\t\t// 7. Return -1.\n\n\t\t\treturn -1;\n\t\t}\n\n\t});\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.find\n\nif (!Array.prototype.find) {\n\n\tObject.defineProperty(Array.prototype, 'find', {\n\n\t\tvalue: function value(predicate) {\n\n\t\t\t// 1. Let O be ? ToObject(this value).\n\n\t\t\tif (this == null) {\n\n\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t}\n\n\t\t\tvar o = Object(this);\n\n\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\t\t\tvar len = o.length >>> 0;\n\n\t\t\t// 3. If IsCallable(predicate) is false, throw a TypeError exception.\n\n\t\t\tif (typeof predicate !== 'function') {\n\n\t\t\t\tthrow new TypeError('predicate must be a function');\n\t\t\t}\n\n\t\t\t// 4. If thisArg was supplied, let T be thisArg; else let T be undefined.\n\n\t\t\tvar thisArg = arguments[1];\n\n\t\t\t// 5. Let k be 0.\n\n\t\t\tvar k = 0;\n\n\t\t\t// 6. Repeat, while k < len\n\n\t\t\twhile (k < len) {\n\n\t\t\t\t// a. Let Pk be ! ToString(k).\n\n\t\t\t\t// b. Let kValue be ? Get(O, Pk).\n\n\t\t\t\t// c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).\n\n\t\t\t\t// d. If testResult is true, return kValue.\n\n\t\t\t\tvar kValue = o[k];\n\n\t\t\t\tif (predicate.call(thisArg, kValue, k, o)) {\n\n\t\t\t\t\treturn kValue;\n\t\t\t\t}\n\n\t\t\t\t// e. Increase k by 1.\n\n\t\t\t\tk++;\n\t\t\t}\n\n\t\t\t// 7. Return undefined.\n\n\t\t\treturn undefined;\n\t\t}\n\n\t});\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes#Polyfill\n\nif (!String.prototype.includes) {\n\n\tString.prototype.includes = function (search, start) {\n\n\t\t'use strict';\n\n\t\tif (search instanceof RegExp) {\n\n\t\t\tthrow TypeError('first argument must not be a RegExp');\n\t\t}\n\n\t\tif (start === undefined) {\n\t\t\tstart = 0;\n\t\t}\n\n\t\treturn this.indexOf(search, start) !== -1;\n\t};\n}\n\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\n\nif (!Array.prototype.includes) {\n\n\tObject.defineProperty(Array.prototype, 'includes', {\n\n\t\tvalue: function value(searchElement, fromIndex) {\n\n\t\t\tif (this == null) {\n\n\t\t\t\tthrow new TypeError('\"this\" is null or not defined');\n\t\t\t}\n\n\t\t\t// 1. Let O be ? ToObject(this value).\n\n\t\t\tvar o = Object(this);\n\n\t\t\t// 2. Let len be ? ToLength(? Get(O, \"length\")).\n\n\t\t\tvar len = o.length >>> 0;\n\n\t\t\t// 3. If len is 0, return false.\n\n\t\t\tif (len === 0) {\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// 4. Let n be ? ToInteger(fromIndex).\n\n\t\t\t// (If fromIndex is undefined, this step produces the value 0.)\n\n\t\t\tvar n = fromIndex | 0;\n\n\t\t\t// 5. If n ≥ 0, then\n\n\t\t\t// a. Let k be n.\n\n\t\t\t// 6. Else n < 0,\n\n\t\t\t// a. Let k be len + n.\n\n\t\t\t// b. If k < 0, let k be 0.\n\n\t\t\tvar k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n\t\t\tfunction sameValueZero(x, y) {\n\n\t\t\t\treturn x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n\t\t\t}\n\n\t\t\t// 7. Repeat, while k < len\n\n\t\t\twhile (k < len) {\n\n\t\t\t\t// a. Let elementK be the result of ? Get(O, ! ToString(k)).\n\n\t\t\t\t// b. If SameValueZero(searchElement, elementK) is true, return true.\n\n\t\t\t\tif (sameValueZero(o[k], searchElement)) {\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// c. Increase k by 1.\n\n\t\t\t\tk++;\n\t\t\t}\n\n\t\t\t// 8. Return false\n\n\t\t\treturn false;\n\t\t}\n\n\t});\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill\n\nif (typeof Object.assign !== 'function') {\n\n\t// Must be writable: true, enumerable: false, configurable: true\n\n\tObject.defineProperty(Object, \"assign\", {\n\n\t\tvalue: function assign(target, varArgs) {\n\t\t\t// .length of function is 2\n\n\t\t\t'use strict';\n\n\t\t\tif (target === null || target === undefined) {\n\n\t\t\t\tthrow new TypeError('Cannot convert undefined or null to object');\n\t\t\t}\n\n\t\t\tvar to = Object(target);\n\n\t\t\tfor (var index = 1; index < arguments.length; index++) {\n\n\t\t\t\tvar nextSource = arguments[index];\n\n\t\t\t\tif (nextSource !== null && nextSource !== undefined) {\n\n\t\t\t\t\tfor (var nextKey in nextSource) {\n\n\t\t\t\t\t\t// Avoid bugs when hasOwnProperty is shadowed\n\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n\n\t\t\t\t\t\t\tto[nextKey] = nextSource[nextKey];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn to;\n\t\t},\n\n\t\twritable: true,\n\n\t\tconfigurable: true\n\n\t});\n}\n\nvar ColumnManager = function ColumnManager(table) {\n\n\tthis.table = table; //hold parent table\n\n\tthis.blockHozScrollEvent = false;\n\n\tthis.headersElement = this.createHeadersElement();\n\n\tthis.element = this.createHeaderElement(); //containing element\n\n\tthis.rowManager = null; //hold row manager object\n\n\tthis.columns = []; // column definition object\n\n\tthis.columnsByIndex = []; //columns by index\n\n\tthis.columnsByField = {}; //columns by field\n\n\tthis.scrollLeft = 0;\n\n\tthis.element.insertBefore(this.headersElement, this.element.firstChild);\n};\n\n////////////// Setup Functions /////////////////\n\n\nColumnManager.prototype.createHeadersElement = function () {\n\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-headers\");\n\n\treturn el;\n};\n\nColumnManager.prototype.createHeaderElement = function () {\n\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-header\");\n\n\tif (!this.table.options.headerVisible) {\n\n\t\tel.classList.add(\"tabulator-header-hidden\");\n\t}\n\n\treturn el;\n};\n\nColumnManager.prototype.initialize = function () {\n\n\tvar self = this;\n\n\t//scroll body along with header\n\n\t// self.element.addEventListener(\"scroll\", function(e){\n\n\t// \tif(!self.blockHozScrollEvent){\n\n\t// \t\tself.table.rowManager.scrollHorizontal(self.element.scrollLeft);\n\n\t// \t}\n\n\t// });\n};\n\n//link to row manager\n\nColumnManager.prototype.setRowManager = function (manager) {\n\n\tthis.rowManager = manager;\n};\n\n//return containing element\n\nColumnManager.prototype.getElement = function () {\n\n\treturn this.element;\n};\n\n//return header containing element\n\nColumnManager.prototype.getHeadersElement = function () {\n\n\treturn this.headersElement;\n};\n\n// ColumnManager.prototype.tempScrollBlock = function(){\n\n// \tclearTimeout(this.blockHozScrollEvent);\n\n// \tthis.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);\n\n// }\n\n\n//scroll horizontally to match table body\n\nColumnManager.prototype.scrollHorizontal = function (left) {\n\n\tvar hozAdjust = 0,\n\t scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;\n\n\t// this.tempScrollBlock();\n\n\tthis.element.scrollLeft = left;\n\n\t//adjust for vertical scrollbar moving table when present\n\n\tif (left > scrollWidth) {\n\n\t\thozAdjust = left - scrollWidth;\n\n\t\tthis.element.style.marginLeft = -hozAdjust + \"px\";\n\t} else {\n\n\t\tthis.element.style.marginLeft = 0;\n\t}\n\n\t//keep frozen columns fixed in position\n\n\t//this._calcFrozenColumnsPos(hozAdjust + 3);\n\n\n\tthis.scrollLeft = left;\n\n\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\tthis.table.modules.frozenColumns.scrollHorizontal();\n\t}\n};\n\n///////////// Column Setup Functions /////////////\n\n\nColumnManager.prototype.generateColumnsFromRowData = function (data) {\n\n\tvar cols = [],\n\t definitions = this.table.options.autoColumnsDefinitions,\n\t row,\n\t sorter;\n\n\tif (data && data.length) {\n\n\t\trow = data[0];\n\n\t\tfor (var key in row) {\n\n\t\t\tvar col = {\n\n\t\t\t\tfield: key,\n\n\t\t\t\ttitle: key\n\n\t\t\t};\n\n\t\t\tvar value = row[key];\n\n\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\n\t\t\t\tcase \"undefined\":\n\n\t\t\t\t\tsorter = \"string\";\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\n\t\t\t\t\tsorter = \"boolean\";\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\n\t\t\t\t\tif (Array.isArray(value)) {\n\n\t\t\t\t\t\tsorter = \"array\";\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\n\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {\n\n\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tcol.sorter = sorter;\n\n\t\t\tcols.push(col);\n\t\t}\n\n\t\tif (definitions) {\n\n\t\t\tswitch (typeof definitions === 'undefined' ? 'undefined' : _typeof(definitions)) {\n\n\t\t\t\tcase \"function\":\n\n\t\t\t\t\tthis.table.options.columns = definitions.call(this.table, cols);\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"object\":\n\n\t\t\t\t\tif (Array.isArray(definitions)) {\n\n\t\t\t\t\t\tcols.forEach(function (col) {\n\n\t\t\t\t\t\t\tvar match = definitions.find(function (def) {\n\n\t\t\t\t\t\t\t\treturn def.field === col.field;\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tif (match) {\n\n\t\t\t\t\t\t\t\tObject.assign(col, match);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tcols.forEach(function (col) {\n\n\t\t\t\t\t\t\tif (definitions[col.field]) {\n\n\t\t\t\t\t\t\t\tObject.assign(col, definitions[col.field]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.table.options.columns = cols;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.table.options.columns = cols;\n\t\t}\n\n\t\tthis.setColumns(this.table.options.columns);\n\t}\n};\n\nColumnManager.prototype.setColumns = function (cols, row) {\n\n\tvar self = this;\n\n\twhile (self.headersElement.firstChild) {\n\t\tself.headersElement.removeChild(self.headersElement.firstChild);\n\t}self.columns = [];\n\n\tself.columnsByIndex = [];\n\n\tself.columnsByField = {};\n\n\t//reset frozen columns\n\n\tif (self.table.modExists(\"frozenColumns\")) {\n\n\t\tself.table.modules.frozenColumns.reset();\n\t}\n\n\tcols.forEach(function (def, i) {\n\n\t\tself._addColumn(def);\n\t});\n\n\tself._reIndexColumns();\n\n\tif (self.table.options.responsiveLayout && self.table.modExists(\"responsiveLayout\", true)) {\n\n\t\tself.table.modules.responsiveLayout.initialize();\n\t}\n\n\tif (this.table.options.virtualDomHoz) {\n\n\t\tthis.table.vdomHoz.reinitialize(false, true);\n\t}\n\n\tself.redraw(true);\n};\n\nColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {\n\n\tvar column = new Column(definition, this),\n\t colEl = column.getElement(),\n\t index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;\n\n\tif (nextToColumn && index > -1) {\n\n\t\tvar parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());\n\n\t\tvar nextEl = nextToColumn.getElement();\n\n\t\tif (before) {\n\n\t\t\tthis.columns.splice(parentIndex, 0, column);\n\n\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl);\n\t\t} else {\n\n\t\t\tthis.columns.splice(parentIndex + 1, 0, column);\n\n\t\t\tnextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);\n\t\t}\n\t} else {\n\n\t\tif (before) {\n\n\t\t\tthis.columns.unshift(column);\n\n\t\t\tthis.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);\n\t\t} else {\n\n\t\t\tthis.columns.push(column);\n\n\t\t\tthis.headersElement.appendChild(column.getElement());\n\t\t}\n\n\t\tcolumn.columnRendered();\n\t}\n\n\treturn column;\n};\n\nColumnManager.prototype.registerColumnField = function (col) {\n\n\tif (col.definition.field) {\n\n\t\tthis.columnsByField[col.definition.field] = col;\n\t}\n};\n\nColumnManager.prototype.registerColumnPosition = function (col) {\n\n\tthis.columnsByIndex.push(col);\n};\n\nColumnManager.prototype._reIndexColumns = function () {\n\n\tthis.columnsByIndex = [];\n\n\tthis.columns.forEach(function (column) {\n\n\t\tcolumn.reRegisterPosition();\n\t});\n};\n\n//ensure column headers take up the correct amount of space in column groups\n\nColumnManager.prototype._verticalAlignHeaders = function () {\n\n\tvar self = this,\n\t minHeight = 0;\n\n\tself.columns.forEach(function (column) {\n\n\t\tvar height;\n\n\t\tcolumn.clearVerticalAlign();\n\n\t\theight = column.getHeight();\n\n\t\tif (height > minHeight) {\n\n\t\t\tminHeight = height;\n\t\t}\n\t});\n\n\tself.columns.forEach(function (column) {\n\n\t\tcolumn.verticalAlign(self.table.options.columnHeaderVertAlign, minHeight);\n\t});\n\n\tself.rowManager.adjustTableSize();\n};\n\n//////////////// Column Details /////////////////\n\n\nColumnManager.prototype.findColumn = function (subject) {\n\n\tvar self = this;\n\n\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\tif (subject instanceof Column) {\n\n\t\t\t//subject is column element\n\n\t\t\treturn subject;\n\t\t} else if (subject instanceof ColumnComponent) {\n\n\t\t\t//subject is public column component\n\n\t\t\treturn subject._getSelf() || false;\n\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\n\t\t\t//subject is a HTML element of the column header\n\n\t\t\tvar match = self.columns.find(function (column) {\n\n\t\t\t\treturn column.element === subject;\n\t\t\t});\n\n\t\t\treturn match || false;\n\t\t}\n\t} else {\n\n\t\t//subject should be treated as the field name of the column\n\n\t\treturn this.columnsByField[subject] || false;\n\t}\n\n\t//catch all for any other type of input\n\n\n\treturn false;\n};\n\nColumnManager.prototype.getColumnByField = function (field) {\n\n\treturn this.columnsByField[field];\n};\n\nColumnManager.prototype.getColumnsByFieldRoot = function (root) {\n\tvar _this = this;\n\n\tvar matches = [];\n\n\tObject.keys(this.columnsByField).forEach(function (field) {\n\n\t\tvar fieldRoot = field.split(\".\")[0];\n\n\t\tif (fieldRoot === root) {\n\n\t\t\tmatches.push(_this.columnsByField[field]);\n\t\t}\n\t});\n\n\treturn matches;\n};\n\nColumnManager.prototype.getColumnByIndex = function (index) {\n\n\treturn this.columnsByIndex[index];\n};\n\nColumnManager.prototype.getFirstVisibileColumn = function (index) {\n\n\tvar index = this.columnsByIndex.findIndex(function (col) {\n\n\t\treturn col.visible;\n\t});\n\n\treturn index > -1 ? this.columnsByIndex[index] : false;\n};\n\nColumnManager.prototype.getColumns = function () {\n\n\treturn this.columns;\n};\n\nColumnManager.prototype.findColumnIndex = function (column) {\n\n\treturn this.columnsByIndex.findIndex(function (col) {\n\n\t\treturn column === col;\n\t});\n};\n\n//return all columns that are not groups\n\nColumnManager.prototype.getRealColumns = function () {\n\n\treturn this.columnsByIndex;\n};\n\n//travers across columns and call action\n\nColumnManager.prototype.traverse = function (callback) {\n\n\tvar self = this;\n\n\tself.columnsByIndex.forEach(function (column, i) {\n\n\t\tcallback(column, i);\n\t});\n};\n\n//get defintions of actual columns\n\nColumnManager.prototype.getDefinitions = function (active) {\n\n\tvar self = this,\n\t output = [];\n\n\tself.columnsByIndex.forEach(function (column) {\n\n\t\tif (!active || active && column.visible) {\n\n\t\t\toutput.push(column.getDefinition());\n\t\t}\n\t});\n\n\treturn output;\n};\n\n//get full nested definition tree\n\nColumnManager.prototype.getDefinitionTree = function () {\n\n\tvar self = this,\n\t output = [];\n\n\tself.columns.forEach(function (column) {\n\n\t\toutput.push(column.getDefinition(true));\n\t});\n\n\treturn output;\n};\n\nColumnManager.prototype.getComponents = function (structured) {\n\n\tvar self = this,\n\t output = [],\n\t columns = structured ? self.columns : self.columnsByIndex;\n\n\tcolumns.forEach(function (column) {\n\n\t\toutput.push(column.getComponent());\n\t});\n\n\treturn output;\n};\n\nColumnManager.prototype.getWidth = function () {\n\n\tvar width = 0;\n\n\tthis.columnsByIndex.forEach(function (column) {\n\n\t\tif (column.visible) {\n\n\t\t\twidth += column.getWidth();\n\t\t}\n\t});\n\n\treturn width;\n};\n\nColumnManager.prototype.moveColumn = function (from, to, after) {\n\n\tthis.moveColumnActual(from, to, after);\n\n\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\tthis.table.modules.responsiveLayout.initialize();\n\t}\n\n\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t}\n\n\tto.element.parentNode.insertBefore(from.element, to.element);\n\n\tif (after) {\n\n\t\tto.element.parentNode.insertBefore(to.element, from.element);\n\t}\n\n\tthis._verticalAlignHeaders();\n\n\tthis.table.rowManager.reinitialize();\n};\n\nColumnManager.prototype.moveColumnActual = function (from, to, after) {\n\n\tif (from.parent.isGroup) {\n\n\t\tthis._moveColumnInArray(from.parent.columns, from, to, after);\n\t} else {\n\n\t\tthis._moveColumnInArray(this.columns, from, to, after);\n\t}\n\n\tthis._moveColumnInArray(this.columnsByIndex, from, to, after, true);\n\n\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\tthis.table.modules.responsiveLayout.initialize();\n\t}\n\n\tif (this.table.options.virtualDomHoz) {\n\n\t\tthis.table.vdomHoz.reinitialize(true);\n\t}\n\n\tif (this.table.options.columnMoved) {\n\n\t\tthis.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());\n\t}\n\n\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.columns) {\n\n\t\tthis.table.modules.persistence.save(\"columns\");\n\t}\n};\n\nColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {\n\tvar _this2 = this;\n\n\tvar fromIndex = columns.indexOf(from),\n\t toIndex,\n\t rows = [];\n\n\tif (fromIndex > -1) {\n\n\t\tcolumns.splice(fromIndex, 1);\n\n\t\ttoIndex = columns.indexOf(to);\n\n\t\tif (toIndex > -1) {\n\n\t\t\tif (after) {\n\n\t\t\t\ttoIndex = toIndex + 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\ttoIndex = fromIndex;\n\t\t}\n\n\t\tcolumns.splice(toIndex, 0, from);\n\n\t\tif (updateRows) {\n\n\t\t\tif (this.table.options.dataTree && this.table.modExists(\"dataTree\", true)) {\n\n\t\t\t\tthis.table.rowManager.rows.forEach(function (row) {\n\n\t\t\t\t\trows = rows.concat(_this2.table.modules.dataTree.getTreeChildren(row, false, true));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\trows = rows.concat(this.table.rowManager.rows);\n\n\t\t\trows.forEach(function (row) {\n\n\t\t\t\tif (row.cells.length) {\n\n\t\t\t\t\tvar cell = row.cells.splice(fromIndex, 1)[0];\n\n\t\t\t\t\trow.cells.splice(toIndex, 0, cell);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n};\n\nColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {\n\tvar _this3 = this;\n\n\tvar left = 0,\n\t offset = 0,\n\t adjust = 0,\n\t colEl = column.getElement();\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tif (typeof position === \"undefined\") {\n\n\t\t\tposition = _this3.table.options.scrollToColumnPosition;\n\t\t}\n\n\t\tif (typeof ifVisible === \"undefined\") {\n\n\t\t\tifVisible = _this3.table.options.scrollToColumnIfVisible;\n\t\t}\n\n\t\tif (column.visible) {\n\n\t\t\t//align to correct position\n\n\t\t\tswitch (position) {\n\n\t\t\t\tcase \"middle\":\n\n\t\t\t\tcase \"center\":\n\n\t\t\t\t\tadjust = -_this3.element.clientWidth / 2;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"right\":\n\n\t\t\t\t\tadjust = colEl.clientWidth - _this3.headersElement.clientWidth;\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\t//check column visibility\n\n\t\t\tif (!ifVisible) {\n\n\t\t\t\toffset = colEl.offsetLeft;\n\n\t\t\t\tif (offset > 0 && offset + colEl.offsetWidth < _this3.element.clientWidth) {\n\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//calculate scroll position\n\n\t\t\tleft = colEl.offsetLeft + adjust;\n\n\t\t\tleft = Math.max(Math.min(left, _this3.table.rowManager.element.scrollWidth - _this3.table.rowManager.element.clientWidth), 0);\n\n\t\t\t_this3.table.rowManager.scrollHorizontal(left);\n\n\t\t\t_this3.scrollHorizontal(left);\n\n\t\t\tresolve();\n\t\t} else {\n\n\t\t\tconsole.warn(\"Scroll Error - Column not visible\");\n\n\t\t\treject(\"Scroll Error - Column not visible\");\n\t\t}\n\t});\n};\n\n//////////////// Cell Management /////////////////\n\n\nColumnManager.prototype.generateCells = function (row) {\n\n\tvar self = this;\n\n\tvar cells = [];\n\n\tself.columnsByIndex.forEach(function (column) {\n\n\t\tcells.push(column.generateCell(row));\n\t});\n\n\treturn cells;\n};\n\n//////////////// Column Management /////////////////\n\n\nColumnManager.prototype.getFlexBaseWidth = function () {\n\n\tvar self = this,\n\t totalWidth = self.table.element.clientWidth,\n\t //table element width\n\n\tfixedWidth = 0;\n\n\t//adjust for vertical scrollbar if present\n\n\tif (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {\n\n\t\ttotalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;\n\t}\n\n\tthis.columnsByIndex.forEach(function (column) {\n\n\t\tvar width, minWidth, colWidth;\n\n\t\tif (column.visible) {\n\n\t\t\twidth = column.definition.width || 0;\n\n\t\t\tminWidth = typeof column.minWidth == \"undefined\" ? self.table.options.columnMinWidth : parseInt(column.minWidth);\n\n\t\t\tif (typeof width == \"string\") {\n\n\t\t\t\tif (width.indexOf(\"%\") > -1) {\n\n\t\t\t\t\tcolWidth = totalWidth / 100 * parseInt(width);\n\t\t\t\t} else {\n\n\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tcolWidth = width;\n\t\t\t}\n\n\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\t\t}\n\t});\n\n\treturn fixedWidth;\n};\n\nColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {\n\tvar _this4 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar column = _this4._addColumn(definition, before, nextToColumn);\n\n\t\t_this4._reIndexColumns();\n\n\t\tif (_this4.table.options.responsiveLayout && _this4.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t_this4.table.modules.responsiveLayout.initialize();\n\t\t}\n\n\t\tif (_this4.table.modExists(\"columnCalcs\")) {\n\n\t\t\t_this4.table.modules.columnCalcs.recalc(_this4.table.rowManager.activeRows);\n\t\t}\n\n\t\t_this4.redraw(true);\n\n\t\tif (_this4.table.modules.layout.getMode() != \"fitColumns\") {\n\n\t\t\tcolumn.reinitializeWidth();\n\t\t}\n\n\t\t_this4._verticalAlignHeaders();\n\n\t\t_this4.table.rowManager.reinitialize();\n\n\t\tif (_this4.table.options.virtualDomHoz) {\n\n\t\t\t_this4.table.vdomHoz.reinitialize();\n\t\t}\n\n\t\tresolve(column);\n\t});\n};\n\n//remove column from system\n\nColumnManager.prototype.deregisterColumn = function (column) {\n\n\tvar field = column.getField(),\n\t index;\n\n\t//remove from field list\n\n\tif (field) {\n\n\t\tdelete this.columnsByField[field];\n\t}\n\n\t//remove from index list\n\n\tindex = this.columnsByIndex.indexOf(column);\n\n\tif (index > -1) {\n\n\t\tthis.columnsByIndex.splice(index, 1);\n\t}\n\n\t//remove from column list\n\n\tindex = this.columns.indexOf(column);\n\n\tif (index > -1) {\n\n\t\tthis.columns.splice(index, 1);\n\t}\n\n\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\tthis.table.modules.responsiveLayout.initialize();\n\t}\n\n\tthis._verticalAlignHeaders();\n\n\tthis.redraw();\n};\n\n//redraw columns\n\nColumnManager.prototype.redraw = function (force) {\n\n\tif (force) {\n\n\t\tif (Tabulator.prototype.helpers.elVisible(this.element)) {\n\n\t\t\tthis._verticalAlignHeaders();\n\t\t}\n\n\t\tthis.table.rowManager.resetScroll();\n\n\t\tthis.table.rowManager.reinitialize();\n\t}\n\n\tif ([\"fitColumns\", \"fitDataStretch\"].indexOf(this.table.modules.layout.getMode()) > -1) {\n\n\t\tthis.table.modules.layout.layout();\n\t} else {\n\n\t\tif (force) {\n\n\t\t\tthis.table.modules.layout.layout();\n\t\t} else {\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t}\n\t}\n\n\tif (this.table.modExists(\"frozenColumns\")) {\n\n\t\tthis.table.modules.frozenColumns.layout();\n\t}\n\n\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t}\n\n\tif (force) {\n\n\t\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.columns) {\n\n\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t}\n\n\t\tif (this.table.modExists(\"columnCalcs\")) {\n\n\t\t\tthis.table.modules.columnCalcs.redraw();\n\t\t}\n\t}\n\n\tthis.table.footerManager.redraw();\n};\n\n//public column object\nvar ColumnComponent = function ColumnComponent(column) {\n\tthis._column = column;\n\tthis.type = \"ColumnComponent\";\n};\n\nColumnComponent.prototype.getElement = function () {\n\treturn this._column.getElement();\n};\n\nColumnComponent.prototype.getDefinition = function () {\n\treturn this._column.getDefinition();\n};\n\nColumnComponent.prototype.getField = function () {\n\treturn this._column.getField();\n};\n\nColumnComponent.prototype.getCells = function () {\n\tvar cells = [];\n\n\tthis._column.cells.forEach(function (cell) {\n\t\tcells.push(cell.getComponent());\n\t});\n\n\treturn cells;\n};\n\nColumnComponent.prototype.getVisibility = function () {\n\tconsole.warn(\"getVisibility function is deprecated, you should now use the isVisible function\");\n\treturn this._column.visible;\n};\n\nColumnComponent.prototype.isVisible = function () {\n\treturn this._column.visible;\n};\n\nColumnComponent.prototype.show = function () {\n\tif (this._column.isGroup) {\n\t\tthis._column.columns.forEach(function (column) {\n\t\t\tcolumn.show();\n\t\t});\n\t} else {\n\t\tthis._column.show();\n\t}\n};\n\nColumnComponent.prototype.hide = function () {\n\tif (this._column.isGroup) {\n\t\tthis._column.columns.forEach(function (column) {\n\t\t\tcolumn.hide();\n\t\t});\n\t} else {\n\t\tthis._column.hide();\n\t}\n};\n\nColumnComponent.prototype.toggle = function () {\n\tif (this._column.visible) {\n\t\tthis.hide();\n\t} else {\n\t\tthis.show();\n\t}\n};\n\nColumnComponent.prototype.delete = function () {\n\treturn this._column.delete();\n};\n\nColumnComponent.prototype.getSubColumns = function () {\n\tvar output = [];\n\n\tif (this._column.columns.length) {\n\t\tthis._column.columns.forEach(function (column) {\n\t\t\toutput.push(column.getComponent());\n\t\t});\n\t}\n\n\treturn output;\n};\n\nColumnComponent.prototype.getParentColumn = function () {\n\treturn this._column.parent instanceof Column ? this._column.parent.getComponent() : false;\n};\n\nColumnComponent.prototype._getSelf = function () {\n\treturn this._column;\n};\n\nColumnComponent.prototype.scrollTo = function () {\n\treturn this._column.table.columnManager.scrollToColumn(this._column);\n};\n\nColumnComponent.prototype.getTable = function () {\n\treturn this._column.table;\n};\n\nColumnComponent.prototype.headerFilterFocus = function () {\n\tif (this._column.table.modExists(\"filter\", true)) {\n\t\tthis._column.table.modules.filter.setHeaderFilterFocus(this._column);\n\t}\n};\n\nColumnComponent.prototype.reloadHeaderFilter = function () {\n\tif (this._column.table.modExists(\"filter\", true)) {\n\t\tthis._column.table.modules.filter.reloadHeaderFilter(this._column);\n\t}\n};\n\nColumnComponent.prototype.getHeaderFilterValue = function () {\n\tif (this._column.table.modExists(\"filter\", true)) {\n\t\treturn this._column.table.modules.filter.getHeaderFilterValue(this._column);\n\t}\n};\n\nColumnComponent.prototype.setHeaderFilterValue = function (value) {\n\tif (this._column.table.modExists(\"filter\", true)) {\n\t\tthis._column.table.modules.filter.setHeaderFilterValue(this._column, value);\n\t}\n};\n\nColumnComponent.prototype.move = function (to, after) {\n\tvar toColumn = this._column.table.columnManager.findColumn(to);\n\n\tif (toColumn) {\n\t\tthis._column.table.columnManager.moveColumn(this._column, toColumn, after);\n\t} else {\n\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t}\n};\n\nColumnComponent.prototype.getNextColumn = function () {\n\tvar nextCol = this._column.nextColumn();\n\n\treturn nextCol ? nextCol.getComponent() : false;\n};\n\nColumnComponent.prototype.getPrevColumn = function () {\n\tvar prevCol = this._column.prevColumn();\n\n\treturn prevCol ? prevCol.getComponent() : false;\n};\n\nColumnComponent.prototype.updateDefinition = function (updates) {\n\treturn this._column.updateDefinition(updates);\n};\n\nColumnComponent.prototype.getWidth = function () {\n\treturn this._column.getWidth();\n};\n\nColumnComponent.prototype.setWidth = function (width) {\n\tvar result;\n\n\tif (width === true) {\n\t\tresult = this._column.reinitializeWidth(true);\n\t} else {\n\t\tresult = this._column.setWidth(width);\n\t}\n\n\tif (this._column.table.options.virtualDomHoz) {\n\t\tthis._column.table.vdomHoz.reinitialize(true);\n\t}\n\n\treturn result;\n};\n\nColumnComponent.prototype.validate = function () {\n\treturn this._column.validate();\n};\n\nvar Column = function Column(def, parent) {\n\tvar self = this;\n\n\tthis.table = parent.table;\n\tthis.definition = def; //column definition\n\tthis.parent = parent; //hold parent object\n\tthis.type = \"column\"; //type of element\n\tthis.columns = []; //child columns\n\tthis.cells = []; //cells bound to this column\n\tthis.element = this.createElement(); //column header element\n\tthis.contentElement = false;\n\tthis.titleHolderElement = false;\n\tthis.titleElement = false;\n\tthis.groupElement = this.createGroupElement(); //column group holder element\n\tthis.isGroup = false;\n\tthis.tooltip = false; //hold column tooltip\n\tthis.hozAlign = \"\"; //horizontal text alignment\n\tthis.vertAlign = \"\"; //vert text alignment\n\n\t//multi dimensional filed handling\n\tthis.field = \"\";\n\tthis.fieldStructure = \"\";\n\tthis.getFieldValue = \"\";\n\tthis.setFieldValue = \"\";\n\n\tthis.titleFormatterRendered = false;\n\n\tthis.setField(this.definition.field);\n\n\tif (this.table.options.invalidOptionWarnings) {\n\t\tthis.checkDefinition();\n\t}\n\n\tthis.modules = {}; //hold module variables;\n\n\tthis.cellEvents = {\n\t\tcellClick: false,\n\t\tcellDblClick: false,\n\t\tcellContext: false,\n\t\tcellTap: false,\n\t\tcellDblTap: false,\n\t\tcellTapHold: false,\n\t\tcellMouseEnter: false,\n\t\tcellMouseLeave: false,\n\t\tcellMouseOver: false,\n\t\tcellMouseOut: false,\n\t\tcellMouseMove: false\n\t};\n\n\tthis.width = null; //column width\n\tthis.widthStyled = \"\"; //column width prestyled to improve render efficiency\n\tthis.maxWidth = null; //column maximum width\n\tthis.maxWidthStyled = \"\"; //column maximum prestyled to improve render efficiency\n\tthis.minWidth = null; //column minimum width\n\tthis.minWidthStyled = \"\"; //column minimum prestyled to improve render efficiency\n\tthis.widthFixed = false; //user has specified a width for this column\n\n\tthis.visible = true; //default visible state\n\n\tthis.component = null;\n\n\tthis._mapDepricatedFunctionality();\n\n\t//initialize column\n\tif (def.columns) {\n\n\t\tthis.isGroup = true;\n\n\t\tdef.columns.forEach(function (def, i) {\n\t\t\tvar newCol = new Column(def, self);\n\t\t\tself.attachColumn(newCol);\n\t\t});\n\n\t\tself.checkColumnVisibility();\n\t} else {\n\t\tparent.registerColumnField(this);\n\t}\n\n\tif (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists(\"moveRow\")) {\n\t\tthis.table.modules.moveRow.setHandle(true);\n\t}\n\n\tthis._buildHeader();\n\n\tthis.bindModuleColumns();\n};\n\nColumn.prototype.createElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-col\");\n\tel.setAttribute(\"role\", \"columnheader\");\n\tel.setAttribute(\"aria-sort\", \"none\");\n\n\treturn el;\n};\n\nColumn.prototype.createGroupElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-col-group-cols\");\n\n\treturn el;\n};\n\nColumn.prototype.checkDefinition = function () {\n\tvar _this5 = this;\n\n\tObject.keys(this.definition).forEach(function (key) {\n\t\tif (_this5.defaultOptionList.indexOf(key) === -1) {\n\t\t\tconsole.warn(\"Invalid column definition option in '\" + (_this5.field || _this5.definition.title) + \"' column:\", key);\n\t\t}\n\t});\n};\n\nColumn.prototype.setField = function (field) {\n\tthis.field = field;\n\tthis.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];\n\tthis.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;\n\tthis.setFieldValue = this.fieldStructure.length > 1 ? this._setNestedData : this._setFlatData;\n};\n\n//register column position with column manager\nColumn.prototype.registerColumnPosition = function (column) {\n\tthis.parent.registerColumnPosition(column);\n};\n\n//register column position with column manager\nColumn.prototype.registerColumnField = function (column) {\n\tthis.parent.registerColumnField(column);\n};\n\n//trigger position registration\nColumn.prototype.reRegisterPosition = function () {\n\tif (this.isGroup) {\n\t\tthis.columns.forEach(function (column) {\n\t\t\tcolumn.reRegisterPosition();\n\t\t});\n\t} else {\n\t\tthis.registerColumnPosition(this);\n\t}\n};\n\nColumn.prototype._mapDepricatedFunctionality = function () {\n\tif (typeof this.definition.hideInHtml !== \"undefined\") {\n\t\tthis.definition.htmlOutput = !this.definition.hideInHtml;\n\t\tconsole.warn(\"hideInHtml column definition property is deprecated, you should now use htmlOutput\");\n\t}\n\n\tif (typeof this.definition.align !== \"undefined\") {\n\t\tthis.definition.hozAlign = this.definition.align;\n\t\tconsole.warn(\"align column definition property is deprecated, you should now use hozAlign\");\n\t}\n\n\tif (typeof this.definition.downloadTitle !== \"undefined\") {\n\t\tthis.definition.titleDownload = this.definition.downloadTitle;\n\t\tconsole.warn(\"downloadTitle definition property is deprecated, you should now use titleDownload\");\n\t}\n};\n\nColumn.prototype.setTooltip = function () {\n\tvar self = this,\n\t def = self.definition;\n\n\t//set header tooltips\n\tvar tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;\n\n\tif (tooltip) {\n\t\tif (tooltip === true) {\n\t\t\tif (def.field) {\n\t\t\t\tself.table.modules.localize.bind(\"columns|\" + def.field, function (value) {\n\t\t\t\t\tself.element.setAttribute(\"title\", value || def.title);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.element.setAttribute(\"title\", def.title);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof tooltip == \"function\") {\n\t\t\t\ttooltip = tooltip(self.getComponent());\n\n\t\t\t\tif (tooltip === false) {\n\t\t\t\t\ttooltip = \"\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tself.element.setAttribute(\"title\", tooltip);\n\t\t}\n\t} else {\n\t\tself.element.setAttribute(\"title\", \"\");\n\t}\n};\n\n//build header element\nColumn.prototype._buildHeader = function () {\n\tvar self = this,\n\t def = self.definition;\n\n\twhile (self.element.firstChild) {\n\t\tself.element.removeChild(self.element.firstChild);\n\t}if (def.headerVertical) {\n\t\tself.element.classList.add(\"tabulator-col-vertical\");\n\n\t\tif (def.headerVertical === \"flip\") {\n\t\t\tself.element.classList.add(\"tabulator-col-vertical-flip\");\n\t\t}\n\t}\n\n\tself.contentElement = self._bindEvents();\n\n\tself.contentElement = self._buildColumnHeaderContent();\n\n\tself.element.appendChild(self.contentElement);\n\n\tif (self.isGroup) {\n\t\tself._buildGroupHeader();\n\t} else {\n\t\tself._buildColumnHeader();\n\t}\n\n\tself.setTooltip();\n\n\t//set resizable handles\n\tif (self.table.options.resizableColumns && self.table.modExists(\"resizeColumns\")) {\n\t\tself.table.modules.resizeColumns.initializeColumn(\"header\", self, self.element);\n\t}\n\n\t//set resizable handles\n\tif (def.headerFilter && self.table.modExists(\"filter\") && self.table.modExists(\"edit\")) {\n\t\tif (typeof def.headerFilterPlaceholder !== \"undefined\" && def.field) {\n\t\t\tself.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);\n\t\t}\n\n\t\tself.table.modules.filter.initializeColumn(self);\n\t}\n\n\t//set resizable handles\n\tif (self.table.modExists(\"frozenColumns\")) {\n\t\tself.table.modules.frozenColumns.initializeColumn(self);\n\t}\n\n\t//set movable column\n\tif (self.table.options.movableColumns && !self.isGroup && self.table.modExists(\"moveColumn\")) {\n\t\tself.table.modules.moveColumn.initializeColumn(self);\n\t}\n\n\t//set calcs column\n\tif ((def.topCalc || def.bottomCalc) && self.table.modExists(\"columnCalcs\")) {\n\t\tself.table.modules.columnCalcs.initializeColumn(self);\n\t}\n\n\t//handle persistence\n\tif (self.table.modExists(\"persistence\") && self.table.modules.persistence.config.columns) {\n\t\tself.table.modules.persistence.initializeColumn(self);\n\t}\n\n\t//update header tooltip on mouse enter\n\tself.element.addEventListener(\"mouseenter\", function (e) {\n\t\tself.setTooltip();\n\t});\n};\n\nColumn.prototype._bindEvents = function () {\n\n\tvar self = this,\n\t def = self.definition,\n\t dblTap,\n\t tapHold,\n\t tap;\n\n\t//setup header click event bindings\n\tif (typeof def.headerClick == \"function\") {\n\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\tdef.headerClick(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (typeof def.headerDblClick == \"function\") {\n\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\tdef.headerDblClick(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (typeof def.headerContext == \"function\") {\n\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\tdef.headerContext(e, self.getComponent());\n\t\t});\n\t}\n\n\t//setup header tap event bindings\n\tif (typeof def.headerTap == \"function\") {\n\t\ttap = false;\n\n\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\ttap = true;\n\t\t}, { passive: true });\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\tif (tap) {\n\t\t\t\tdef.headerTap(e, self.getComponent());\n\t\t\t}\n\n\t\t\ttap = false;\n\t\t});\n\t}\n\n\tif (typeof def.headerDblTap == \"function\") {\n\t\tdblTap = null;\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\tif (dblTap) {\n\t\t\t\tclearTimeout(dblTap);\n\t\t\t\tdblTap = null;\n\n\t\t\t\tdef.headerDblTap(e, self.getComponent());\n\t\t\t} else {\n\n\t\t\t\tdblTap = setTimeout(function () {\n\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\tdblTap = null;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (typeof def.headerTapHold == \"function\") {\n\t\ttapHold = null;\n\n\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\tclearTimeout(tapHold);\n\n\t\t\ttapHold = setTimeout(function () {\n\t\t\t\tclearTimeout(tapHold);\n\t\t\t\ttapHold = null;\n\t\t\t\ttap = false;\n\t\t\t\tdef.headerTapHold(e, self.getComponent());\n\t\t\t}, 1000);\n\t\t}, { passive: true });\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\tclearTimeout(tapHold);\n\t\t\ttapHold = null;\n\t\t});\n\t}\n\n\t//store column cell click event bindings\n\tif (typeof def.cellClick == \"function\") {\n\t\tself.cellEvents.cellClick = def.cellClick;\n\t}\n\n\tif (typeof def.cellDblClick == \"function\") {\n\t\tself.cellEvents.cellDblClick = def.cellDblClick;\n\t}\n\n\tif (typeof def.cellContext == \"function\") {\n\t\tself.cellEvents.cellContext = def.cellContext;\n\t}\n\n\t//store column mouse event bindings\n\tif (typeof def.cellMouseEnter == \"function\") {\n\t\tself.cellEvents.cellMouseEnter = def.cellMouseEnter;\n\t}\n\n\tif (typeof def.cellMouseLeave == \"function\") {\n\t\tself.cellEvents.cellMouseLeave = def.cellMouseLeave;\n\t}\n\n\tif (typeof def.cellMouseOver == \"function\") {\n\t\tself.cellEvents.cellMouseOver = def.cellMouseOver;\n\t}\n\n\tif (typeof def.cellMouseOut == \"function\") {\n\t\tself.cellEvents.cellMouseOut = def.cellMouseOut;\n\t}\n\n\tif (typeof def.cellMouseMove == \"function\") {\n\t\tself.cellEvents.cellMouseMove = def.cellMouseMove;\n\t}\n\n\t//setup column cell tap event bindings\n\tif (typeof def.cellTap == \"function\") {\n\t\tself.cellEvents.cellTap = def.cellTap;\n\t}\n\n\tif (typeof def.cellDblTap == \"function\") {\n\t\tself.cellEvents.cellDblTap = def.cellDblTap;\n\t}\n\n\tif (typeof def.cellTapHold == \"function\") {\n\t\tself.cellEvents.cellTapHold = def.cellTapHold;\n\t}\n\n\t//setup column cell edit callbacks\n\tif (typeof def.cellEdited == \"function\") {\n\t\tself.cellEvents.cellEdited = def.cellEdited;\n\t}\n\n\tif (typeof def.cellEditing == \"function\") {\n\t\tself.cellEvents.cellEditing = def.cellEditing;\n\t}\n\n\tif (typeof def.cellEditCancelled == \"function\") {\n\t\tself.cellEvents.cellEditCancelled = def.cellEditCancelled;\n\t}\n};\n\n//build header element for header\nColumn.prototype._buildColumnHeader = function () {\n\tvar _this6 = this;\n\n\tvar def = this.definition,\n\t table = this.table,\n\t sortable;\n\n\t//set column sorter\n\tif (table.modExists(\"sort\")) {\n\t\ttable.modules.sort.initializeColumn(this, this.titleHolderElement);\n\t}\n\n\t//set column header context menu\n\tif ((def.headerContextMenu || def.headerClickMenu || def.headerMenu) && table.modExists(\"menu\")) {\n\t\ttable.modules.menu.initializeColumnHeader(this);\n\t}\n\n\t//set column formatter\n\tif (table.modExists(\"format\")) {\n\t\ttable.modules.format.initializeColumn(this);\n\t}\n\n\t//set column editor\n\tif (typeof def.editor != \"undefined\" && table.modExists(\"edit\")) {\n\t\ttable.modules.edit.initializeColumn(this);\n\t}\n\n\t//set colum validator\n\tif (typeof def.validator != \"undefined\" && table.modExists(\"validate\")) {\n\t\ttable.modules.validate.initializeColumn(this);\n\t}\n\n\t//set column mutator\n\tif (table.modExists(\"mutator\")) {\n\t\ttable.modules.mutator.initializeColumn(this);\n\t}\n\n\t//set column accessor\n\tif (table.modExists(\"accessor\")) {\n\t\ttable.modules.accessor.initializeColumn(this);\n\t}\n\n\t//set respoviveLayout\n\tif (_typeof(table.options.responsiveLayout) && table.modExists(\"responsiveLayout\")) {\n\t\ttable.modules.responsiveLayout.initializeColumn(this);\n\t}\n\n\t//set column visibility\n\tif (typeof def.visible != \"undefined\") {\n\t\tif (def.visible) {\n\t\t\tthis.show(true);\n\t\t} else {\n\t\t\tthis.hide(true);\n\t\t}\n\t}\n\n\t//asign additional css classes to column header\n\tif (def.cssClass) {\n\t\tvar classeNames = def.cssClass.split(\" \");\n\t\tclasseNames.forEach(function (className) {\n\t\t\t_this6.element.classList.add(className);\n\t\t});\n\t}\n\n\tif (def.field) {\n\t\tthis.element.setAttribute(\"tabulator-field\", def.field);\n\t}\n\n\t//set min width if present\n\tthis.setMinWidth(typeof def.minWidth == \"undefined\" ? this.table.options.columnMinWidth : parseInt(def.minWidth));\n\n\tif (def.maxWidth || this.table.options.columnMaxWidth) {\n\t\tif (def.maxWidth !== false) {\n\t\t\tthis.setMaxWidth(typeof def.maxWidth == \"undefined\" ? this.table.options.columnMaxWidth : parseInt(def.maxWidth));\n\t\t}\n\t}\n\n\tthis.reinitializeWidth();\n\n\t//set tooltip if present\n\tthis.tooltip = this.definition.tooltip || this.definition.tooltip === false ? this.definition.tooltip : this.table.options.tooltips;\n\n\t//set orizontal text alignment\n\tthis.hozAlign = typeof this.definition.hozAlign == \"undefined\" ? this.table.options.cellHozAlign : this.definition.hozAlign;\n\tthis.vertAlign = typeof this.definition.vertAlign == \"undefined\" ? this.table.options.cellVertAlign : this.definition.vertAlign;\n\n\tthis.titleElement.style.textAlign = this.definition.headerHozAlign || this.table.options.headerHozAlign;\n};\n\nColumn.prototype._buildColumnHeaderContent = function () {\n\tvar def = this.definition,\n\t table = this.table;\n\n\tvar contentElement = document.createElement(\"div\");\n\tcontentElement.classList.add(\"tabulator-col-content\");\n\n\tthis.titleHolderElement = document.createElement(\"div\");\n\tthis.titleHolderElement.classList.add(\"tabulator-col-title-holder\");\n\n\tcontentElement.appendChild(this.titleHolderElement);\n\n\tthis.titleElement = this._buildColumnHeaderTitle();\n\n\tthis.titleHolderElement.appendChild(this.titleElement);\n\n\treturn contentElement;\n};\n\n//build title element of column\nColumn.prototype._buildColumnHeaderTitle = function () {\n\tvar self = this,\n\t def = self.definition,\n\t table = self.table,\n\t title;\n\n\tvar titleHolderElement = document.createElement(\"div\");\n\ttitleHolderElement.classList.add(\"tabulator-col-title\");\n\n\tif (def.editableTitle) {\n\t\tvar titleElement = document.createElement(\"input\");\n\t\ttitleElement.classList.add(\"tabulator-title-editor\");\n\n\t\ttitleElement.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t\ttitleElement.focus();\n\t\t});\n\n\t\ttitleElement.addEventListener(\"change\", function () {\n\t\t\tdef.title = titleElement.value;\n\t\t\ttable.options.columnTitleChanged.call(self.table, self.getComponent());\n\t\t});\n\n\t\ttitleHolderElement.appendChild(titleElement);\n\n\t\tif (def.field) {\n\t\t\ttable.modules.localize.bind(\"columns|\" + def.field, function (text) {\n\t\t\t\ttitleElement.value = text || def.title || \" \";\n\t\t\t});\n\t\t} else {\n\t\t\ttitleElement.value = def.title || \" \";\n\t\t}\n\t} else {\n\t\tif (def.field) {\n\t\t\ttable.modules.localize.bind(\"columns|\" + def.field, function (text) {\n\t\t\t\tself._formatColumnHeaderTitle(titleHolderElement, text || def.title || \" \");\n\t\t\t});\n\t\t} else {\n\t\t\tself._formatColumnHeaderTitle(titleHolderElement, def.title || \" \");\n\t\t}\n\t}\n\n\treturn titleHolderElement;\n};\n\nColumn.prototype._formatColumnHeaderTitle = function (el, title) {\n\tvar _this7 = this;\n\n\tvar formatter, contents, params, mockCell, onRendered;\n\n\tif (this.definition.titleFormatter && this.table.modExists(\"format\")) {\n\n\t\tformatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);\n\n\t\tonRendered = function onRendered(callback) {\n\t\t\t_this7.titleFormatterRendered = callback;\n\t\t};\n\n\t\tmockCell = {\n\t\t\tgetValue: function getValue() {\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tgetElement: function getElement() {\n\t\t\t\treturn el;\n\t\t\t}\n\t\t};\n\n\t\tparams = this.definition.titleFormatterParams || {};\n\n\t\tparams = typeof params === \"function\" ? params() : params;\n\n\t\tcontents = formatter.call(this.table.modules.format, mockCell, params, onRendered);\n\n\t\tswitch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {\n\t\t\tcase \"object\":\n\t\t\t\tif (contents instanceof Node) {\n\t\t\t\t\tel.appendChild(contents);\n\t\t\t\t} else {\n\t\t\t\t\tel.innerHTML = \"\";\n\t\t\t\t\tconsole.warn(\"Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", contents);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"undefined\":\n\t\t\tcase \"null\":\n\t\t\t\tel.innerHTML = \"\";\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tel.innerHTML = contents;\n\t\t}\n\t} else {\n\t\tel.innerHTML = title;\n\t}\n};\n\n//build header element for column group\nColumn.prototype._buildGroupHeader = function () {\n\tvar _this8 = this;\n\n\tthis.element.classList.add(\"tabulator-col-group\");\n\tthis.element.setAttribute(\"role\", \"columngroup\");\n\tthis.element.setAttribute(\"aria-title\", this.definition.title);\n\n\t//asign additional css classes to column header\n\tif (this.definition.cssClass) {\n\t\tvar classeNames = this.definition.cssClass.split(\" \");\n\t\tclasseNames.forEach(function (className) {\n\t\t\t_this8.element.classList.add(className);\n\t\t});\n\t}\n\n\t//set column header context menu\n\tif ((this.definition.headerContextMenu || this.definition.headerMenu) && this.table.modExists(\"menu\")) {\n\t\tthis.table.modules.menu.initializeColumnHeader(this);\n\t}\n\n\tthis.titleElement.style.textAlign = this.definition.headerHozAlign || this.table.options.headerHozAlign;\n\n\tthis.element.appendChild(this.groupElement);\n};\n\n//flat field lookup\nColumn.prototype._getFlatData = function (data) {\n\treturn data[this.field];\n};\n\n//nested field lookup\nColumn.prototype._getNestedData = function (data) {\n\tvar dataObj = data,\n\t structure = this.fieldStructure,\n\t length = structure.length,\n\t output;\n\n\tfor (var _i = 0; _i < length; _i++) {\n\n\t\tdataObj = dataObj[structure[_i]];\n\n\t\toutput = dataObj;\n\n\t\tif (!dataObj) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn output;\n};\n\n//flat field set\nColumn.prototype._setFlatData = function (data, value) {\n\tif (this.field) {\n\t\tdata[this.field] = value;\n\t}\n};\n\n//nested field set\nColumn.prototype._setNestedData = function (data, value) {\n\tvar dataObj = data,\n\t structure = this.fieldStructure,\n\t length = structure.length;\n\n\tfor (var _i2 = 0; _i2 < length; _i2++) {\n\n\t\tif (_i2 == length - 1) {\n\t\t\tdataObj[structure[_i2]] = value;\n\t\t} else {\n\t\t\tif (!dataObj[structure[_i2]]) {\n\t\t\t\tif (typeof value !== \"undefined\") {\n\t\t\t\t\tdataObj[structure[_i2]] = {};\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdataObj = dataObj[structure[_i2]];\n\t\t}\n\t}\n};\n\n//attach column to this group\nColumn.prototype.attachColumn = function (column) {\n\tvar self = this;\n\n\tif (self.groupElement) {\n\t\tself.columns.push(column);\n\t\tself.groupElement.appendChild(column.getElement());\n\t} else {\n\t\tconsole.warn(\"Column Warning - Column being attached to another column instead of column group\");\n\t}\n};\n\n//vertically align header in column\nColumn.prototype.verticalAlign = function (alignment, height) {\n\n\t//calculate height of column header and group holder element\n\tvar parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;\n\t// var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;\n\n\tthis.element.style.height = parentHeight + \"px\";\n\n\tif (this.isGroup) {\n\t\tthis.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + \"px\";\n\t}\n\n\t//vertically align cell contents\n\tif (!this.isGroup && alignment !== \"top\") {\n\t\tif (alignment === \"bottom\") {\n\t\t\tthis.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + \"px\";\n\t\t} else {\n\t\t\tthis.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + \"px\";\n\t\t}\n\t}\n\n\tthis.columns.forEach(function (column) {\n\t\tcolumn.verticalAlign(alignment);\n\t});\n};\n\n//clear vertical alignmenet\nColumn.prototype.clearVerticalAlign = function () {\n\tthis.element.style.paddingTop = \"\";\n\tthis.element.style.height = \"\";\n\tthis.element.style.minHeight = \"\";\n\tthis.groupElement.style.minHeight = \"\";\n\n\tthis.columns.forEach(function (column) {\n\t\tcolumn.clearVerticalAlign();\n\t});\n};\n\nColumn.prototype.bindModuleColumns = function () {\n\t//check if rownum formatter is being used on a column\n\tif (this.definition.formatter == \"rownum\") {\n\t\tthis.table.rowManager.rowNumColumn = this;\n\t}\n};\n\n//// Retreive Column Information ////\n\n//return column header element\nColumn.prototype.getElement = function () {\n\treturn this.element;\n};\n\n//return colunm group element\nColumn.prototype.getGroupElement = function () {\n\treturn this.groupElement;\n};\n\n//return field name\nColumn.prototype.getField = function () {\n\treturn this.field;\n};\n\n//return the first column in a group\nColumn.prototype.getFirstColumn = function () {\n\tif (!this.isGroup) {\n\t\treturn this;\n\t} else {\n\t\tif (this.columns.length) {\n\t\t\treturn this.columns[0].getFirstColumn();\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\n//return the last column in a group\nColumn.prototype.getLastColumn = function () {\n\tif (!this.isGroup) {\n\t\treturn this;\n\t} else {\n\t\tif (this.columns.length) {\n\t\t\treturn this.columns[this.columns.length - 1].getLastColumn();\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\n//return all columns in a group\nColumn.prototype.getColumns = function () {\n\treturn this.columns;\n};\n\n//return all columns in a group\nColumn.prototype.getCells = function () {\n\treturn this.cells;\n};\n\n//retreive the top column in a group of columns\nColumn.prototype.getTopColumn = function () {\n\tif (this.parent.isGroup) {\n\t\treturn this.parent.getTopColumn();\n\t} else {\n\t\treturn this;\n\t}\n};\n\n//return column definition object\nColumn.prototype.getDefinition = function (updateBranches) {\n\tvar colDefs = [];\n\n\tif (this.isGroup && updateBranches) {\n\t\tthis.columns.forEach(function (column) {\n\t\t\tcolDefs.push(column.getDefinition(true));\n\t\t});\n\n\t\tthis.definition.columns = colDefs;\n\t}\n\n\treturn this.definition;\n};\n\n//////////////////// Actions ////////////////////\n\nColumn.prototype.checkColumnVisibility = function () {\n\tvar visible = false;\n\n\tthis.columns.forEach(function (column) {\n\t\tif (column.visible) {\n\t\t\tvisible = true;\n\t\t}\n\t});\n\n\tif (visible) {\n\t\tthis.show();\n\t\tthis.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);\n\t} else {\n\t\tthis.hide();\n\t}\n};\n\n//show column\nColumn.prototype.show = function (silent, responsiveToggle) {\n\tif (!this.visible) {\n\t\tthis.visible = true;\n\n\t\tthis.element.style.display = \"\";\n\n\t\tif (this.parent.isGroup) {\n\t\t\tthis.parent.checkColumnVisibility();\n\t\t}\n\n\t\tthis.cells.forEach(function (cell) {\n\t\t\tcell.show();\n\t\t});\n\n\t\tif (!this.isGroup && this.width === null) {\n\t\t\tthis.reinitializeWidth();\n\t\t}\n\n\t\tthis.table.columnManager._verticalAlignHeaders();\n\n\t\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.columns) {\n\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t}\n\n\t\tif (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\tthis.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);\n\t\t}\n\n\t\tif (!silent) {\n\t\t\tthis.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);\n\t\t}\n\n\t\tif (this.parent.isGroup) {\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tif (!this.silent && this.table.options.virtualDomHoz) {\n\t\t\tthis.table.vdomHoz.reinitialize();\n\t\t}\n\t}\n};\n\n//hide column\nColumn.prototype.hide = function (silent, responsiveToggle) {\n\tif (this.visible) {\n\t\tthis.visible = false;\n\n\t\tthis.element.style.display = \"none\";\n\n\t\tthis.table.columnManager._verticalAlignHeaders();\n\n\t\tif (this.parent.isGroup) {\n\t\t\tthis.parent.checkColumnVisibility();\n\t\t}\n\n\t\tthis.cells.forEach(function (cell) {\n\t\t\tcell.hide();\n\t\t});\n\n\t\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.columns) {\n\t\t\tthis.table.modules.persistence.save(\"columns\");\n\t\t}\n\n\t\tif (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\t\t\tthis.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);\n\t\t}\n\n\t\tif (!silent) {\n\t\t\tthis.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);\n\t\t}\n\n\t\tif (this.parent.isGroup) {\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\n\t\tif (!this.silent && this.table.options.virtualDomHoz) {\n\t\t\tthis.table.vdomHoz.reinitialize();\n\t\t}\n\t}\n};\n\nColumn.prototype.matchChildWidths = function () {\n\tvar childWidth = 0;\n\n\tif (this.contentElement && this.columns.length) {\n\t\tthis.columns.forEach(function (column) {\n\t\t\tif (column.visible) {\n\t\t\t\tchildWidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\tthis.contentElement.style.maxWidth = childWidth - 1 + \"px\";\n\n\t\tif (this.parent.isGroup) {\n\t\t\tthis.parent.matchChildWidths();\n\t\t}\n\t}\n};\n\nColumn.prototype.removeChild = function (child) {\n\tvar index = this.columns.indexOf(child);\n\n\tif (index > -1) {\n\t\tthis.columns.splice(index, 1);\n\t}\n\n\tif (!this.columns.length) {\n\t\tthis.delete();\n\t}\n};\n\nColumn.prototype.setWidth = function (width) {\n\tthis.widthFixed = true;\n\tthis.setWidthActual(width);\n};\n\nColumn.prototype.setWidthActual = function (width) {\n\tif (isNaN(width)) {\n\t\twidth = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));\n\t}\n\n\twidth = Math.max(this.minWidth, width);\n\n\tif (this.maxWidth) {\n\t\twidth = Math.min(this.maxWidth, width);\n\t}\n\n\tthis.width = width;\n\tthis.widthStyled = width ? width + \"px\" : \"\";\n\n\tthis.element.style.width = this.widthStyled;\n\n\tif (!this.isGroup) {\n\t\tthis.cells.forEach(function (cell) {\n\t\t\tcell.setWidth();\n\t\t});\n\t}\n\n\tif (this.parent.isGroup) {\n\t\tthis.parent.matchChildWidths();\n\t}\n\n\t//set resizable handles\n\tif (this.table.modExists(\"frozenColumns\")) {\n\t\tthis.table.modules.frozenColumns.layout();\n\t}\n};\n\nColumn.prototype.checkCellHeights = function () {\n\tvar rows = [];\n\n\tthis.cells.forEach(function (cell) {\n\t\tif (cell.row.heightInitialized) {\n\t\t\tif (cell.row.getElement().offsetParent !== null) {\n\t\t\t\trows.push(cell.row);\n\t\t\t\tcell.row.clearCellHeight();\n\t\t\t} else {\n\t\t\t\tcell.row.heightInitialized = false;\n\t\t\t}\n\t\t}\n\t});\n\n\trows.forEach(function (row) {\n\t\trow.calcHeight();\n\t});\n\n\trows.forEach(function (row) {\n\t\trow.setCellHeight();\n\t});\n};\n\nColumn.prototype.getWidth = function () {\n\tvar width = 0;\n\n\tif (this.isGroup) {\n\t\tthis.columns.forEach(function (column) {\n\t\t\tif (column.visible) {\n\t\t\t\twidth += column.getWidth();\n\t\t\t}\n\t\t});\n\t} else {\n\t\twidth = this.width;\n\t}\n\n\treturn width;\n};\n\nColumn.prototype.getHeight = function () {\n\treturn this.element.offsetHeight;\n};\n\nColumn.prototype.setMinWidth = function (minWidth) {\n\tthis.minWidth = minWidth;\n\tthis.minWidthStyled = minWidth ? minWidth + \"px\" : \"\";\n\n\tthis.element.style.minWidth = this.minWidthStyled;\n\n\tthis.cells.forEach(function (cell) {\n\t\tcell.setMinWidth();\n\t});\n};\n\nColumn.prototype.setMaxWidth = function (maxWidth) {\n\tthis.maxWidth = maxWidth;\n\tthis.maxWidthStyled = maxWidth ? maxWidth + \"px\" : \"\";\n\n\tthis.element.style.maxWidth = this.maxWidthStyled;\n\n\tthis.cells.forEach(function (cell) {\n\t\tcell.setMaxWidth();\n\t});\n};\n\nColumn.prototype.delete = function () {\n\tvar _this9 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar index;\n\n\t\tif (_this9.isGroup) {\n\t\t\t_this9.columns.forEach(function (column) {\n\t\t\t\tcolumn.delete();\n\t\t\t});\n\t\t}\n\n\t\t//cancel edit if column is currently being edited\n\t\tif (_this9.table.modExists(\"edit\")) {\n\t\t\tif (_this9.table.modules.edit.currentCell.column === _this9) {\n\t\t\t\t_this9.table.modules.edit.cancelEdit();\n\t\t\t}\n\t\t}\n\n\t\tvar cellCount = _this9.cells.length;\n\n\t\tfor (var _i3 = 0; _i3 < cellCount; _i3++) {\n\t\t\t_this9.cells[0].delete();\n\t\t}\n\n\t\tif (_this9.element.parentNode) {\n\t\t\t_this9.element.parentNode.removeChild(_this9.element);\n\t\t}\n\n\t\t_this9.element = false;\n\t\t_this9.contentElement = false;\n\t\t_this9.titleElement = false;\n\t\t_this9.groupElement = false;\n\n\t\tif (_this9.parent.isGroup) {\n\t\t\t_this9.parent.removeChild(_this9);\n\t\t}\n\n\t\t_this9.table.columnManager.deregisterColumn(_this9);\n\n\t\tif (_this9.table.options.virtualDomHoz) {\n\t\t\t_this9.table.vdomHoz.reinitialize(true);\n\t\t}\n\n\t\tresolve();\n\t});\n};\n\nColumn.prototype.columnRendered = function () {\n\tif (this.titleFormatterRendered) {\n\t\tthis.titleFormatterRendered();\n\t}\n};\n\nColumn.prototype.validate = function () {\n\tvar invalid = [];\n\n\tthis.cells.forEach(function (cell) {\n\t\tif (!cell.validate()) {\n\t\t\tinvalid.push(cell.getComponent());\n\t\t}\n\t});\n\n\treturn invalid.length ? invalid : true;\n};\n\n//////////////// Cell Management /////////////////\n\n//generate cell for this column\nColumn.prototype.generateCell = function (row) {\n\tvar self = this;\n\n\tvar cell = new Cell(self, row);\n\n\tthis.cells.push(cell);\n\n\treturn cell;\n};\n\nColumn.prototype.nextColumn = function () {\n\tvar index = this.table.columnManager.findColumnIndex(this);\n\treturn index > -1 ? this._nextVisibleColumn(index + 1) : false;\n};\n\nColumn.prototype._nextVisibleColumn = function (index) {\n\tvar column = this.table.columnManager.getColumnByIndex(index);\n\treturn !column || column.visible ? column : this._nextVisibleColumn(index + 1);\n};\n\nColumn.prototype.prevColumn = function () {\n\tvar index = this.table.columnManager.findColumnIndex(this);\n\treturn index > -1 ? this._prevVisibleColumn(index - 1) : false;\n};\n\nColumn.prototype._prevVisibleColumn = function (index) {\n\tvar column = this.table.columnManager.getColumnByIndex(index);\n\treturn !column || column.visible ? column : this._prevVisibleColumn(index - 1);\n};\n\nColumn.prototype.reinitializeWidth = function (force) {\n\tthis.widthFixed = false;\n\n\t//set width if present\n\tif (typeof this.definition.width !== \"undefined\" && !force) {\n\t\tthis.setWidth(this.definition.width);\n\t}\n\n\t//hide header filters to prevent them altering column width\n\tif (this.table.modExists(\"filter\")) {\n\t\tthis.table.modules.filter.hideHeaderFilterElements();\n\t}\n\n\tthis.fitToData();\n\n\t//show header filters again after layout is complete\n\tif (this.table.modExists(\"filter\")) {\n\t\tthis.table.modules.filter.showHeaderFilterElements();\n\t}\n};\n\n//set column width to maximum cell width\nColumn.prototype.fitToData = function () {\n\tvar self = this;\n\n\tif (!this.widthFixed) {\n\t\tthis.element.style.width = \"\";\n\n\t\tself.cells.forEach(function (cell) {\n\t\t\tcell.clearWidth();\n\t\t});\n\t}\n\n\tvar maxWidth = this.element.offsetWidth;\n\n\tif (!self.width || !this.widthFixed) {\n\t\tself.cells.forEach(function (cell) {\n\t\t\tvar width = cell.getWidth();\n\n\t\t\tif (width > maxWidth) {\n\t\t\t\tmaxWidth = width;\n\t\t\t}\n\t\t});\n\n\t\tif (maxWidth) {\n\t\t\tself.setWidthActual(maxWidth + 1);\n\t\t}\n\t}\n};\n\nColumn.prototype.updateDefinition = function (updates) {\n\tvar _this10 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar definition;\n\n\t\tif (!_this10.isGroup) {\n\t\t\tif (!_this10.parent.isGroup) {\n\t\t\t\tdefinition = Object.assign({}, _this10.getDefinition());\n\t\t\t\tdefinition = Object.assign(definition, updates);\n\n\t\t\t\t_this10.table.columnManager.addColumn(definition, false, _this10).then(function (column) {\n\n\t\t\t\t\tif (definition.field == _this10.field) {\n\t\t\t\t\t\t_this10.field = false; //cleair field name to prevent deletion of duplicate column from arrays\n\t\t\t\t\t}\n\n\t\t\t\t\t_this10.delete().then(function () {\n\t\t\t\t\t\tresolve(column.getComponent());\n\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}).catch(function (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\t\treject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Column Update Error - The updateDefinition function is only available on ungrouped columns\");\n\t\t\treject(\"Column Update Error - The updateDefinition function is only available on columns, not column groups\");\n\t\t}\n\t});\n};\n\nColumn.prototype.deleteCell = function (cell) {\n\tvar index = this.cells.indexOf(cell);\n\n\tif (index > -1) {\n\t\tthis.cells.splice(index, 1);\n\t}\n};\n\nColumn.prototype.defaultOptionList = [\"title\", \"field\", \"columns\", \"visible\", \"align\", \"hozAlign\", \"vertAlign\", \"width\", \"minWidth\", \"maxWidth\", \"widthGrow\", \"widthShrink\", \"resizable\", \"frozen\", \"responsive\", \"tooltip\", \"cssClass\", \"rowHandle\", \"hideInHtml\", \"print\", \"htmlOutput\", \"sorter\", \"sorterParams\", \"formatter\", \"formatterParams\", \"variableHeight\", \"editable\", \"editor\", \"editorParams\", \"validator\", \"mutator\", \"mutatorParams\", \"mutatorData\", \"mutatorDataParams\", \"mutatorEdit\", \"mutatorEditParams\", \"mutatorClipboard\", \"mutatorClipboardParams\", \"accessor\", \"accessorParams\", \"accessorData\", \"accessorDataParams\", \"accessorDownload\", \"accessorDownloadParams\", \"accessorClipboard\", \"accessorClipboardParams\", \"accessorPrint\", \"accessorPrintParams\", \"accessorHtmlOutput\", \"accessorHtmlOutputParams\", \"clipboard\", \"download\", \"downloadTitle\", \"topCalc\", \"topCalcParams\", \"topCalcFormatter\", \"topCalcFormatterParams\", \"bottomCalc\", \"bottomCalcParams\", \"bottomCalcFormatter\", \"bottomCalcFormatterParams\", \"cellClick\", \"cellDblClick\", \"cellContext\", \"cellTap\", \"cellDblTap\", \"cellTapHold\", \"cellMouseEnter\", \"cellMouseLeave\", \"cellMouseOver\", \"cellMouseOut\", \"cellMouseMove\", \"cellEditing\", \"cellEdited\", \"cellEditCancelled\", \"headerSort\", \"headerSortStartingDir\", \"headerSortTristate\", \"headerClick\", \"headerDblClick\", \"headerContext\", \"headerTap\", \"headerDblTap\", \"headerTapHold\", \"headerTooltip\", \"headerVertical\", \"headerHozAlign\", \"editableTitle\", \"titleFormatter\", \"titleFormatterParams\", \"headerFilter\", \"headerFilterPlaceholder\", \"headerFilterParams\", \"headerFilterEmptyCheck\", \"headerFilterFunc\", \"headerFilterFuncParams\", \"headerFilterLiveFilter\", \"print\", \"headerContextMenu\", \"headerMenu\", \"contextMenu\",\n// \"headerClickMenu\",\n\"clickMenu\", \"formatterPrint\", \"formatterPrintParams\", \"formatterClipboard\", \"formatterClipboardParams\", \"formatterHtmlOutput\", \"formatterHtmlOutputParams\", \"titlePrint\", \"titleClipboard\", \"titleHtmlOutput\", \"titleDownload\"];\n\n//////////////// Event Bindings /////////////////\n\n//////////////// Object Generation /////////////////\nColumn.prototype.getComponent = function () {\n\tif (!this.component) {\n\t\tthis.component = new ColumnComponent(this);\n\t}\n\n\treturn this.component;\n};\n\nvar RowManager = function RowManager(table) {\n\n\tthis.table = table;\n\tthis.element = this.createHolderElement(); //containing element\n\tthis.tableElement = this.createTableElement(); //table element\n\tthis.heightFixer = this.createTableElement(); //table element\n\tthis.columnManager = null; //hold column manager object\n\tthis.height = 0; //hold height of table element\n\n\tthis.firstRender = false; //handle first render\n\tthis.renderMode = \"virtual\"; //current rendering mode\n\tthis.fixedHeight = false; //current rendering mode\n\n\tthis.rows = []; //hold row data objects\n\tthis.activeRows = []; //rows currently available to on display in the table\n\tthis.activeRowsCount = 0; //count of active rows\n\n\tthis.displayRows = []; //rows currently on display in the table\n\tthis.displayRowsCount = 0; //count of display rows\n\n\tthis.scrollTop = 0;\n\tthis.scrollLeft = 0;\n\n\tthis.vDomRowHeight = 20; //approximation of row heights for padding\n\n\tthis.vDomTop = 0; //hold position for first rendered row in the virtual DOM\n\tthis.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM\n\n\tthis.vDomScrollPosTop = 0; //last scroll position of the vDom top;\n\tthis.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;\n\n\tthis.vDomTopPad = 0; //hold value of padding for top of virtual DOM\n\tthis.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM\n\n\tthis.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go\n\n\tthis.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling\n\n\tthis.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)\n\tthis.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin\n\n\tthis.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed\n\tthis.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed\n\n\tthis.rowNumColumn = false; //hold column component for row number column\n\n\tthis.redrawBlock = false; //prevent redraws to allow multiple data manipulations becore continuing\n\tthis.redrawBlockRestoreConfig = false; //store latest redraw function calls for when redraw is needed\n\tthis.redrawBlockRederInPosition = false; //store latest redraw function calls for when redraw is needed\n};\n\n//////////////// Setup Functions /////////////////\n\nRowManager.prototype.createHolderElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-tableHolder\");\n\tel.setAttribute(\"tabindex\", 0);\n\n\treturn el;\n};\n\nRowManager.prototype.createTableElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-table\");\n\n\treturn el;\n};\n\n//return containing element\nRowManager.prototype.getElement = function () {\n\treturn this.element;\n};\n\n//return table element\nRowManager.prototype.getTableElement = function () {\n\treturn this.tableElement;\n};\n\n//return position of row in table\nRowManager.prototype.getRowPosition = function (row, active) {\n\tif (active) {\n\t\treturn this.activeRows.indexOf(row);\n\t} else {\n\t\treturn this.rows.indexOf(row);\n\t}\n};\n\n//link to column manager\nRowManager.prototype.setColumnManager = function (manager) {\n\tthis.columnManager = manager;\n};\n\nRowManager.prototype.initialize = function () {\n\tvar self = this;\n\n\tself.setRenderMode();\n\n\t//initialize manager\n\tself.element.appendChild(self.tableElement);\n\n\tself.firstRender = true;\n\n\t//scroll header along with table body\n\tself.element.addEventListener(\"scroll\", function () {\n\t\tvar left = self.element.scrollLeft;\n\n\t\t//handle horizontal scrolling\n\t\tif (self.scrollLeft != left) {\n\t\t\tself.columnManager.scrollHorizontal(left);\n\n\t\t\tif (self.table.options.groupBy) {\n\t\t\t\tself.table.modules.groupRows.scrollHeaders(left);\n\t\t\t}\n\n\t\t\tif (self.table.modExists(\"columnCalcs\")) {\n\t\t\t\tself.table.modules.columnCalcs.scrollHorizontal(left);\n\t\t\t}\n\n\t\t\tself.table.options.scrollHorizontal(left);\n\t\t}\n\n\t\tself.scrollLeft = left;\n\t});\n\n\t//handle virtual dom scrolling\n\tif (this.renderMode === \"virtual\") {\n\n\t\tself.element.addEventListener(\"scroll\", function () {\n\t\t\tvar top = self.element.scrollTop;\n\t\t\tvar dir = self.scrollTop > top;\n\n\t\t\t//handle verical scrolling\n\t\t\tif (self.scrollTop != top) {\n\t\t\t\tself.scrollTop = top;\n\t\t\t\tself.scrollVertical(dir);\n\n\t\t\t\tif (self.table.options.ajaxProgressiveLoad == \"scroll\") {\n\t\t\t\t\tself.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);\n\t\t\t\t}\n\n\t\t\t\tself.table.options.scrollVertical(top);\n\t\t\t} else {\n\t\t\t\tself.scrollTop = top;\n\t\t\t}\n\t\t});\n\t}\n};\n\n////////////////// Row Manipulation //////////////////\n\nRowManager.prototype.findRow = function (subject) {\n\tvar self = this;\n\n\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\tif (subject instanceof Row) {\n\t\t\t//subject is row element\n\t\t\treturn subject;\n\t\t} else if (subject instanceof RowComponent) {\n\t\t\t//subject is public row component\n\t\t\treturn subject._getSelf() || false;\n\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\t\t\t//subject is a HTML element of the row\n\t\t\tvar match = self.rows.find(function (row) {\n\t\t\t\treturn row.getElement() === subject;\n\t\t\t});\n\n\t\t\treturn match || false;\n\t\t}\n\t} else if (typeof subject == \"undefined\" || subject === null) {\n\t\treturn false;\n\t} else {\n\t\t//subject should be treated as the index of the row\n\t\tvar _match = self.rows.find(function (row) {\n\t\t\treturn row.data[self.table.options.index] == subject;\n\t\t});\n\n\t\treturn _match || false;\n\t}\n\n\t//catch all for any other type of input\n\n\treturn false;\n};\n\nRowManager.prototype.getRowFromDataObject = function (data) {\n\tvar match = this.rows.find(function (row) {\n\t\treturn row.data === data;\n\t});\n\n\treturn match || false;\n};\n\nRowManager.prototype.getRowFromPosition = function (position, active) {\n\tif (active) {\n\t\treturn this.activeRows[position];\n\t} else {\n\t\treturn this.rows[position];\n\t}\n};\n\nRowManager.prototype.scrollToRow = function (row, position, ifVisible) {\n\tvar _this11 = this;\n\n\tvar rowIndex = this.getDisplayRows().indexOf(row),\n\t rowEl = row.getElement(),\n\t rowTop,\n\t offset = 0;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (rowIndex > -1) {\n\n\t\t\tif (typeof position === \"undefined\") {\n\t\t\t\tposition = _this11.table.options.scrollToRowPosition;\n\t\t\t}\n\n\t\t\tif (typeof ifVisible === \"undefined\") {\n\t\t\t\tifVisible = _this11.table.options.scrollToRowIfVisible;\n\t\t\t}\n\n\t\t\tif (position === \"nearest\") {\n\t\t\t\tswitch (_this11.renderMode) {\n\t\t\t\t\tcase \"classic\":\n\t\t\t\t\t\trowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;\n\t\t\t\t\t\tposition = Math.abs(_this11.element.scrollTop - rowTop) > Math.abs(_this11.element.scrollTop + _this11.element.clientHeight - rowTop) ? \"bottom\" : \"top\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"virtual\":\n\t\t\t\t\t\tposition = Math.abs(_this11.vDomTop - rowIndex) > Math.abs(_this11.vDomBottom - rowIndex) ? \"bottom\" : \"top\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//check row visibility\n\t\t\tif (!ifVisible) {\n\t\t\t\tif (Tabulator.prototype.helpers.elVisible(rowEl)) {\n\t\t\t\t\toffset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this11.element).top;\n\n\t\t\t\t\tif (offset > 0 && offset < _this11.element.clientHeight - rowEl.offsetHeight) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//scroll to row\n\t\t\tswitch (_this11.renderMode) {\n\t\t\t\tcase \"classic\":\n\t\t\t\t\t_this11.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this11.element).top + _this11.element.scrollTop;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"virtual\":\n\t\t\t\t\t_this11._virtualRenderFill(rowIndex, true);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t//align to correct position\n\t\t\tswitch (position) {\n\t\t\t\tcase \"middle\":\n\t\t\t\tcase \"center\":\n\n\t\t\t\t\tif (_this11.element.scrollHeight - _this11.element.scrollTop == _this11.element.clientHeight) {\n\t\t\t\t\t\t_this11.element.scrollTop = _this11.element.scrollTop + (rowEl.offsetTop - _this11.element.scrollTop) - (_this11.element.scrollHeight - rowEl.offsetTop) / 2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_this11.element.scrollTop = _this11.element.scrollTop - _this11.element.clientHeight / 2;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"bottom\":\n\n\t\t\t\t\tif (_this11.element.scrollHeight - _this11.element.scrollTop == _this11.element.clientHeight) {\n\t\t\t\t\t\t_this11.element.scrollTop = _this11.element.scrollTop - (_this11.element.scrollHeight - rowEl.offsetTop) + rowEl.offsetHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_this11.element.scrollTop = _this11.element.scrollTop - _this11.element.clientHeight + rowEl.offsetHeight;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tresolve();\n\t\t} else {\n\t\t\tconsole.warn(\"Scroll Error - Row not visible\");\n\t\t\treject(\"Scroll Error - Row not visible\");\n\t\t}\n\t});\n};\n\n////////////////// Data Handling //////////////////\n\nRowManager.prototype.setData = function (data, renderInPosition, columnsChanged) {\n\tvar _this12 = this;\n\n\tvar self = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (renderInPosition && _this12.getDisplayRows().length) {\n\t\t\tif (self.table.options.pagination) {\n\t\t\t\tself._setDataActual(data, true);\n\t\t\t} else {\n\t\t\t\t_this12.reRenderInPosition(function () {\n\t\t\t\t\tself._setDataActual(data);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tif (_this12.table.options.autoColumns && columnsChanged) {\n\t\t\t\t_this12.table.columnManager.generateColumnsFromRowData(data);\n\t\t\t}\n\t\t\t_this12.resetScroll();\n\n\t\t\t_this12._setDataActual(data);\n\t\t}\n\n\t\tresolve();\n\t});\n};\n\nRowManager.prototype._setDataActual = function (data, renderInPosition) {\n\tvar self = this;\n\n\tself.table.options.dataLoading.call(this.table, data);\n\n\tthis._wipeElements();\n\n\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\t\tthis.table.modules.history.clear();\n\t}\n\n\tif (Array.isArray(data)) {\n\n\t\tif (this.table.modExists(\"selectRow\")) {\n\t\t\tthis.table.modules.selectRow.clearSelectionData();\n\t\t}\n\n\t\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {\n\t\t\tthis.table.modules.reactiveData.watchData(data);\n\t\t}\n\n\t\tdata.forEach(function (def, i) {\n\t\t\tif (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === \"object\") {\n\t\t\t\tvar row = new Row(def, self);\n\t\t\t\tself.rows.push(row);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Data Loading Warning - Invalid row data detected and ignored, expecting object but received:\", def);\n\t\t\t}\n\t\t});\n\n\t\tself.refreshActiveData(false, false, renderInPosition);\n\n\t\tself.table.options.dataLoaded.call(this.table, data);\n\t} else {\n\t\tconsole.error(\"Data Loading Error - Unable to process data due to invalid data type \\nExpecting: array \\nReceived: \", typeof data === 'undefined' ? 'undefined' : _typeof(data), \"\\nData: \", data);\n\t}\n};\n\nRowManager.prototype._wipeElements = function () {\n\tthis.rows.forEach(function (row) {\n\t\trow.wipe();\n\t});\n\n\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\tthis.table.modules.groupRows.wipe();\n\t}\n\n\tthis.rows = [];\n\tthis.activeRows = [];\n\tthis.activeRowsCount = 0;\n\tthis.displayRows = [];\n\tthis.displayRowsCount = 0;\n\n\tthis.adjustTableSize();\n};\n\nRowManager.prototype.deleteRow = function (row, blockRedraw) {\n\tvar allIndex = this.rows.indexOf(row),\n\t activeIndex = this.activeRows.indexOf(row);\n\n\tif (activeIndex > -1) {\n\t\tthis.activeRows.splice(activeIndex, 1);\n\t}\n\n\tif (allIndex > -1) {\n\t\tthis.rows.splice(allIndex, 1);\n\t}\n\n\tthis.setActiveRows(this.activeRows);\n\n\tthis.displayRowIterator(function (rows) {\n\t\tvar displayIndex = rows.indexOf(row);\n\n\t\tif (displayIndex > -1) {\n\t\t\trows.splice(displayIndex, 1);\n\t\t}\n\t});\n\n\tif (!blockRedraw) {\n\t\tthis.reRenderInPosition();\n\t}\n\n\tthis.regenerateRowNumbers();\n\n\tthis.table.options.rowDeleted.call(this.table, row.getComponent());\n\n\tif (this.table.options.dataChanged) {\n\t\tthis.table.options.dataChanged.call(this.table, this.getData());\n\t}\n\n\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t} else if (this.table.options.pagination && this.table.modExists(\"page\")) {\n\t\tthis.refreshActiveData(false, false, true);\n\t} else {\n\t\tif (this.table.options.pagination && this.table.modExists(\"page\")) {\n\t\t\tthis.refreshActiveData(\"page\");\n\t\t}\n\t}\n};\n\nRowManager.prototype.addRow = function (data, pos, index, blockRedraw) {\n\n\tvar row = this.addRowActual(data, pos, index, blockRedraw);\n\n\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\t\tthis.table.modules.history.action(\"rowAdd\", row, { data: data, pos: pos, index: index });\n\t}\n\n\treturn row;\n};\n\n//add multiple rows\nRowManager.prototype.addRows = function (data, pos, index) {\n\tvar _this13 = this;\n\n\tvar self = this,\n\t length = 0,\n\t rows = [];\n\n\treturn new Promise(function (resolve, reject) {\n\t\tpos = _this13.findAddRowPos(pos);\n\n\t\tif (!Array.isArray(data)) {\n\t\t\tdata = [data];\n\t\t}\n\n\t\tlength = data.length - 1;\n\n\t\tif (typeof index == \"undefined\" && pos || typeof index !== \"undefined\" && !pos) {\n\t\t\tdata.reverse();\n\t\t}\n\n\t\tdata.forEach(function (item, i) {\n\t\t\tvar row = self.addRow(item, pos, index, true);\n\t\t\trows.push(row);\n\t\t});\n\n\t\tif (_this13.table.options.groupBy && _this13.table.modExists(\"groupRows\")) {\n\t\t\t_this13.table.modules.groupRows.updateGroupRows(true);\n\t\t} else if (_this13.table.options.pagination && _this13.table.modExists(\"page\")) {\n\t\t\t_this13.refreshActiveData(false, false, true);\n\t\t} else {\n\t\t\t_this13.reRenderInPosition();\n\t\t}\n\n\t\t//recalc column calculations if present\n\t\tif (_this13.table.modExists(\"columnCalcs\")) {\n\t\t\t_this13.table.modules.columnCalcs.recalc(_this13.table.rowManager.activeRows);\n\t\t}\n\n\t\t_this13.regenerateRowNumbers();\n\t\tresolve(rows);\n\t});\n};\n\nRowManager.prototype.findAddRowPos = function (pos) {\n\tif (typeof pos === \"undefined\") {\n\t\tpos = this.table.options.addRowPos;\n\t}\n\n\tif (pos === \"pos\") {\n\t\tpos = true;\n\t}\n\n\tif (pos === \"bottom\") {\n\t\tpos = false;\n\t}\n\n\treturn pos;\n};\n\nRowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {\n\tvar row = data instanceof Row ? data : new Row(data || {}, this),\n\t top = this.findAddRowPos(pos),\n\t allIndex = -1,\n\t activeIndex,\n\t dispRows;\n\n\tif (!index && this.table.options.pagination && this.table.options.paginationAddRow == \"page\") {\n\t\tdispRows = this.getDisplayRows();\n\n\t\tif (top) {\n\t\t\tif (dispRows.length) {\n\t\t\t\tindex = dispRows[0];\n\t\t\t} else {\n\t\t\t\tif (this.activeRows.length) {\n\t\t\t\t\tindex = this.activeRows[this.activeRows.length - 1];\n\t\t\t\t\ttop = false;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (dispRows.length) {\n\t\t\t\tindex = dispRows[dispRows.length - 1];\n\t\t\t\ttop = dispRows.length < this.table.modules.page.getPageSize() ? false : true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (typeof index !== \"undefined\") {\n\t\tindex = this.findRow(index);\n\t}\n\n\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\tthis.table.modules.groupRows.assignRowToGroup(row);\n\n\t\tvar groupRows = row.getGroup().rows;\n\n\t\tif (groupRows.length > 1) {\n\n\t\t\tif (!index || index && groupRows.indexOf(index) == -1) {\n\t\t\t\tif (top) {\n\t\t\t\t\tif (groupRows[0] !== row) {\n\t\t\t\t\t\tindex = groupRows[0];\n\t\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, !top);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (groupRows[groupRows.length - 1] !== row) {\n\t\t\t\t\t\tindex = groupRows[groupRows.length - 1];\n\t\t\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, !top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._moveRowInArray(row.getGroup().rows, row, index, !top);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (index) {\n\t\tallIndex = this.rows.indexOf(index);\n\t}\n\n\tif (index && allIndex > -1) {\n\t\tactiveIndex = this.activeRows.indexOf(index);\n\n\t\tthis.displayRowIterator(function (rows) {\n\t\t\tvar displayIndex = rows.indexOf(index);\n\n\t\t\tif (displayIndex > -1) {\n\t\t\t\trows.splice(top ? displayIndex : displayIndex + 1, 0, row);\n\t\t\t}\n\t\t});\n\n\t\tif (activeIndex > -1) {\n\t\t\tthis.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);\n\t\t}\n\n\t\tthis.rows.splice(top ? allIndex : allIndex + 1, 0, row);\n\t} else {\n\n\t\tif (top) {\n\n\t\t\tthis.displayRowIterator(function (rows) {\n\t\t\t\trows.unshift(row);\n\t\t\t});\n\n\t\t\tthis.activeRows.unshift(row);\n\t\t\tthis.rows.unshift(row);\n\t\t} else {\n\t\t\tthis.displayRowIterator(function (rows) {\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\tthis.activeRows.push(row);\n\t\t\tthis.rows.push(row);\n\t\t}\n\t}\n\n\tthis.setActiveRows(this.activeRows);\n\n\tthis.table.options.rowAdded.call(this.table, row.getComponent());\n\n\tif (this.table.options.dataChanged) {\n\t\tthis.table.options.dataChanged.call(this.table, this.getData());\n\t}\n\n\tif (!blockRedraw) {\n\t\tthis.reRenderInPosition();\n\t}\n\n\treturn row;\n};\n\nRowManager.prototype.moveRow = function (from, to, after) {\n\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\t\tthis.table.modules.history.action(\"rowMove\", from, { posFrom: this.getRowPosition(from), posTo: this.getRowPosition(to), to: to, after: after });\n\t}\n\n\tthis.moveRowActual(from, to, after);\n\n\tthis.regenerateRowNumbers();\n\n\tthis.table.options.rowMoved.call(this.table, from.getComponent());\n};\n\nRowManager.prototype.moveRowActual = function (from, to, after) {\n\tvar _this14 = this;\n\n\tthis._moveRowInArray(this.rows, from, to, after);\n\tthis._moveRowInArray(this.activeRows, from, to, after);\n\n\tthis.displayRowIterator(function (rows) {\n\t\t_this14._moveRowInArray(rows, from, to, after);\n\t});\n\n\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\tif (!after && to instanceof Group) {\n\t\t\tto = this.table.rowManager.prevDisplayRow(from) || to;\n\t\t}\n\n\t\tvar toGroup = to.getGroup();\n\t\tvar fromGroup = from.getGroup();\n\n\t\tif (toGroup === fromGroup) {\n\t\t\tthis._moveRowInArray(toGroup.rows, from, to, after);\n\t\t} else {\n\t\t\tif (fromGroup) {\n\t\t\t\tfromGroup.removeRow(from);\n\t\t\t}\n\n\t\t\ttoGroup.insertRow(from, to, after);\n\t\t}\n\t}\n};\n\nRowManager.prototype._moveRowInArray = function (rows, from, to, after) {\n\tvar fromIndex, toIndex, start, end;\n\n\tif (from !== to) {\n\n\t\tfromIndex = rows.indexOf(from);\n\n\t\tif (fromIndex > -1) {\n\n\t\t\trows.splice(fromIndex, 1);\n\n\t\t\ttoIndex = rows.indexOf(to);\n\n\t\t\tif (toIndex > -1) {\n\n\t\t\t\tif (after) {\n\t\t\t\t\trows.splice(toIndex + 1, 0, from);\n\t\t\t\t} else {\n\t\t\t\t\trows.splice(toIndex, 0, from);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trows.splice(fromIndex, 0, from);\n\t\t\t}\n\t\t}\n\n\t\t//restyle rows\n\t\tif (rows === this.getDisplayRows()) {\n\n\t\t\tstart = fromIndex < toIndex ? fromIndex : toIndex;\n\t\t\tend = toIndex > fromIndex ? toIndex : fromIndex + 1;\n\n\t\t\tfor (var _i4 = start; _i4 <= end; _i4++) {\n\t\t\t\tif (rows[_i4]) {\n\t\t\t\t\tthis.styleRow(rows[_i4], _i4);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nRowManager.prototype.clearData = function () {\n\tthis.setData([]);\n};\n\nRowManager.prototype.getRowIndex = function (row) {\n\treturn this.findRowIndex(row, this.rows);\n};\n\nRowManager.prototype.getDisplayRowIndex = function (row) {\n\tvar index = this.getDisplayRows().indexOf(row);\n\treturn index > -1 ? index : false;\n};\n\nRowManager.prototype.nextDisplayRow = function (row, rowOnly) {\n\tvar index = this.getDisplayRowIndex(row),\n\t nextRow = false;\n\n\tif (index !== false && index < this.displayRowsCount - 1) {\n\t\tnextRow = this.getDisplayRows()[index + 1];\n\t}\n\n\tif (nextRow && (!(nextRow instanceof Row) || nextRow.type != \"row\")) {\n\t\treturn this.nextDisplayRow(nextRow, rowOnly);\n\t}\n\n\treturn nextRow;\n};\n\nRowManager.prototype.prevDisplayRow = function (row, rowOnly) {\n\tvar index = this.getDisplayRowIndex(row),\n\t prevRow = false;\n\n\tif (index) {\n\t\tprevRow = this.getDisplayRows()[index - 1];\n\t}\n\n\tif (rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != \"row\")) {\n\t\treturn this.prevDisplayRow(prevRow, rowOnly);\n\t}\n\n\treturn prevRow;\n};\n\nRowManager.prototype.findRowIndex = function (row, list) {\n\tvar rowIndex;\n\n\trow = this.findRow(row);\n\n\tif (row) {\n\t\trowIndex = list.indexOf(row);\n\n\t\tif (rowIndex > -1) {\n\t\t\treturn rowIndex;\n\t\t}\n\t}\n\n\treturn false;\n};\n\nRowManager.prototype.getData = function (active, transform) {\n\tvar output = [],\n\t rows = this.getRows(active);\n\n\trows.forEach(function (row) {\n\t\tif (row.type == \"row\") {\n\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t}\n\t});\n\n\treturn output;\n};\n\nRowManager.prototype.getComponents = function (active) {\n\tvar output = [],\n\t rows = this.getRows(active);\n\n\trows.forEach(function (row) {\n\t\toutput.push(row.getComponent());\n\t});\n\n\treturn output;\n};\n\nRowManager.prototype.getDataCount = function (active) {\n\tvar rows = this.getRows(active);\n\n\treturn rows.length;\n};\n\nRowManager.prototype._genRemoteRequest = function () {\n\tvar _this15 = this;\n\n\tvar table = this.table,\n\t options = table.options,\n\t params = {};\n\n\tif (table.modExists(\"page\")) {\n\t\t//set sort data if defined\n\t\tif (options.ajaxSorting) {\n\t\t\tvar sorters = this.table.modules.sort.getSort();\n\n\t\t\tsorters.forEach(function (item) {\n\t\t\t\tdelete item.column;\n\t\t\t});\n\n\t\t\tparams[this.table.modules.page.paginationDataSentNames.sorters] = sorters;\n\t\t}\n\n\t\t//set filter data if defined\n\t\tif (options.ajaxFiltering) {\n\t\t\tvar filters = this.table.modules.filter.getFilters(true, true);\n\n\t\t\tparams[this.table.modules.page.paginationDataSentNames.filters] = filters;\n\t\t}\n\n\t\tthis.table.modules.ajax.setParams(params, true);\n\t}\n\n\ttable.modules.ajax.sendRequest().then(function (data) {\n\t\t_this15._setDataActual(data, true);\n\t}).catch(function (e) {});\n};\n\n//choose the path to refresh data after a filter update\nRowManager.prototype.filterRefresh = function () {\n\tvar table = this.table,\n\t options = table.options,\n\t left = this.scrollLeft;\n\n\tif (options.ajaxFiltering) {\n\t\tif (options.pagination == \"remote\" && table.modExists(\"page\")) {\n\t\t\ttable.modules.page.reset(true);\n\t\t\ttable.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t} else if (options.ajaxProgressiveLoad) {\n\t\t\ttable.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t} else {\n\t\t\t//assume data is url, make ajax call to url to get data\n\t\t\tthis._genRemoteRequest();\n\t\t}\n\t} else {\n\t\tthis.refreshActiveData(\"filter\");\n\t}\n\n\tthis.scrollHorizontal(left);\n};\n\n//choose the path to refresh data after a sorter update\nRowManager.prototype.sorterRefresh = function (loadOrignalData) {\n\tvar table = this.table,\n\t options = this.table.options,\n\t left = this.scrollLeft;\n\n\tif (options.ajaxSorting) {\n\t\tif ((options.pagination == \"remote\" || options.progressiveLoad) && table.modExists(\"page\")) {\n\t\t\ttable.modules.page.reset(true);\n\t\t\ttable.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t\t} else if (options.ajaxProgressiveLoad) {\n\t\t\ttable.modules.ajax.loadData().then(function () {}).catch(function () {});\n\t\t} else {\n\t\t\t//assume data is url, make ajax call to url to get data\n\t\t\tthis._genRemoteRequest();\n\t\t}\n\t} else {\n\t\tthis.refreshActiveData(loadOrignalData ? \"filter\" : \"sort\");\n\t}\n\n\tthis.scrollHorizontal(left);\n};\n\nRowManager.prototype.scrollHorizontal = function (left) {\n\tthis.scrollLeft = left;\n\tthis.element.scrollLeft = left;\n\n\tif (this.table.options.groupBy) {\n\t\tthis.table.modules.groupRows.scrollHeaders(left);\n\t}\n\n\tif (this.table.modExists(\"columnCalcs\")) {\n\t\tthis.table.modules.columnCalcs.scrollHorizontal(left);\n\t}\n};\n\n//set active data set\nRowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {\n\tvar self = this,\n\t table = this.table,\n\t cascadeOrder = [\"all\", \"filter\", \"sort\", \"display\", \"freeze\", \"group\", \"tree\", \"page\"],\n\t displayIndex;\n\n\tif (this.redrawBlock) {\n\n\t\tif (!this.redrawBlockRestoreConfig || cascadeOrder.indexOf(stage) < cascadeOrder.indexOf(this.redrawBlockRestoreConfig.stage)) {\n\t\t\tthis.redrawBlockRestoreConfig = {\n\t\t\t\tstage: stage,\n\t\t\t\tskipStage: skipStage,\n\t\t\t\trenderInPosition: renderInPosition\n\t\t\t};\n\t\t}\n\n\t\treturn;\n\t} else {\n\n\t\tif (self.table.modExists(\"edit\")) {\n\t\t\tself.table.modules.edit.cancelEdit();\n\t\t}\n\n\t\tif (!stage) {\n\t\t\tstage = \"all\";\n\t\t}\n\n\t\tif (table.options.selectable && !table.options.selectablePersistence && table.modExists(\"selectRow\")) {\n\t\t\ttable.modules.selectRow.deselectRows();\n\t\t}\n\n\t\t//cascade through data refresh stages\n\t\tswitch (stage) {\n\t\t\tcase \"all\":\n\n\t\t\tcase \"filter\":\n\t\t\t\tif (!skipStage) {\n\t\t\t\t\tif (table.modExists(\"filter\")) {\n\t\t\t\t\t\tself.setActiveRows(table.modules.filter.filter(self.rows));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.setActiveRows(self.rows.slice(0));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"sort\":\n\t\t\t\tif (!skipStage) {\n\t\t\t\t\tif (table.modExists(\"sort\")) {\n\t\t\t\t\t\ttable.modules.sort.sort(this.activeRows);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\t\t//regenerate row numbers for row number formatter if in use\n\t\t\t\tthis.regenerateRowNumbers();\n\n\t\t\t//generic stage to allow for pipeline trigger after the data manipulation stage\n\t\t\tcase \"display\":\n\t\t\t\tthis.resetDisplayRows();\n\n\t\t\tcase \"freeze\":\n\t\t\t\tif (!skipStage) {\n\t\t\t\t\tif (this.table.modExists(\"frozenRows\")) {\n\t\t\t\t\t\tif (table.modules.frozenRows.isFrozen()) {\n\t\t\t\t\t\t\tif (!table.modules.frozenRows.getDisplayIndex()) {\n\t\t\t\t\t\t\t\ttable.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdisplayIndex = table.modules.frozenRows.getDisplayIndex();\n\n\t\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\t\tif (displayIndex !== true) {\n\t\t\t\t\t\t\t\ttable.modules.frozenRows.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"group\":\n\t\t\t\tif (!skipStage) {\n\t\t\t\t\tif (table.options.groupBy && table.modExists(\"groupRows\")) {\n\n\t\t\t\t\t\tif (!table.modules.groupRows.getDisplayIndex()) {\n\t\t\t\t\t\t\ttable.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.groupRows.getDisplayIndex();\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\t\t\t\t\t\t\ttable.modules.groupRows.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\tcase \"tree\":\n\n\t\t\t\tif (!skipStage) {\n\t\t\t\t\tif (table.options.dataTree && table.modExists(\"dataTree\")) {\n\t\t\t\t\t\tif (!table.modules.dataTree.getDisplayIndex()) {\n\t\t\t\t\t\t\ttable.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.dataTree.getDisplayIndex();\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\t\t\t\t\t\t\ttable.modules.dataTree.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\n\t\t\t\tif (table.options.pagination && table.modExists(\"page\") && !renderInPosition) {\n\t\t\t\t\tif (table.modules.page.getMode() == \"local\") {\n\t\t\t\t\t\ttable.modules.page.reset();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tcase \"page\":\n\t\t\t\tif (!skipStage) {\n\t\t\t\t\tif (table.options.pagination && table.modExists(\"page\")) {\n\n\t\t\t\t\t\tif (!table.modules.page.getDisplayIndex()) {\n\t\t\t\t\t\t\ttable.modules.page.setDisplayIndex(this.getNextDisplayIndex());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = table.modules.page.getDisplayIndex();\n\n\t\t\t\t\t\tif (table.modules.page.getMode() == \"local\") {\n\t\t\t\t\t\t\ttable.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdisplayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);\n\n\t\t\t\t\t\tif (displayIndex !== true) {\n\t\t\t\t\t\t\ttable.modules.page.setDisplayIndex(displayIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tskipStage = false;\n\t\t\t\t}\n\t\t}\n\n\t\tif (Tabulator.prototype.helpers.elVisible(self.element)) {\n\t\t\tif (renderInPosition) {\n\t\t\t\tself.reRenderInPosition();\n\t\t\t} else {\n\n\t\t\t\tif (stage === \"all\" && this.table.options.virtualDomHoz) {\n\t\t\t\t\tthis.table.vdomHoz.dataChange();\n\t\t\t\t}\n\n\t\t\t\tself.renderTable();\n\n\t\t\t\tif (table.options.layoutColumnsOnNewData) {\n\t\t\t\t\tself.table.columnManager.redraw(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (table.modExists(\"columnCalcs\")) {\n\t\t\ttable.modules.columnCalcs.recalc(this.activeRows);\n\t\t}\n\t}\n};\n\n//regenerate row numbers for row number formatter if in use\nRowManager.prototype.regenerateRowNumbers = function () {\n\tvar _this16 = this;\n\n\tif (this.rowNumColumn) {\n\t\tthis.activeRows.forEach(function (row) {\n\t\t\tvar cell = row.getCell(_this16.rowNumColumn);\n\n\t\t\tif (cell) {\n\t\t\t\tcell._generateContents();\n\t\t\t}\n\t\t});\n\t}\n};\n\nRowManager.prototype.setActiveRows = function (activeRows) {\n\tthis.activeRows = activeRows;\n\tthis.activeRowsCount = this.activeRows.length;\n};\n\n//reset display rows array\nRowManager.prototype.resetDisplayRows = function () {\n\tthis.displayRows = [];\n\n\tthis.displayRows.push(this.activeRows.slice(0));\n\n\tthis.displayRowsCount = this.displayRows[0].length;\n\n\tif (this.table.modExists(\"frozenRows\")) {\n\t\tthis.table.modules.frozenRows.setDisplayIndex(0);\n\t}\n\n\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\tthis.table.modules.groupRows.setDisplayIndex(0);\n\t}\n\n\tif (this.table.options.pagination && this.table.modExists(\"page\")) {\n\t\tthis.table.modules.page.setDisplayIndex(0);\n\t}\n};\n\nRowManager.prototype.getNextDisplayIndex = function () {\n\treturn this.displayRows.length;\n};\n\n//set display row pipeline data\nRowManager.prototype.setDisplayRows = function (displayRows, index) {\n\n\tvar output = true;\n\n\tif (index && typeof this.displayRows[index] != \"undefined\") {\n\t\tthis.displayRows[index] = displayRows;\n\t\toutput = true;\n\t} else {\n\t\tthis.displayRows.push(displayRows);\n\t\toutput = index = this.displayRows.length - 1;\n\t}\n\n\tif (index == this.displayRows.length - 1) {\n\t\tthis.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;\n\t}\n\n\treturn output;\n};\n\nRowManager.prototype.getDisplayRows = function (index) {\n\tif (typeof index == \"undefined\") {\n\t\treturn this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];\n\t} else {\n\t\treturn this.displayRows[index] || [];\n\t}\n};\n\nRowManager.prototype.getVisibleRows = function (viewable) {\n\tvar topEdge = this.element.scrollTop,\n\t bottomEdge = this.element.clientHeight + topEdge,\n\t topFound = false,\n\t topRow = 0,\n\t bottomRow = 0,\n\t rows = this.getDisplayRows();\n\n\tif (viewable) {\n\n\t\tthis.getDisplayRows();\n\t\tfor (var i = this.vDomTop; i <= this.vDomBottom; i++) {\n\t\t\tif (rows[i]) {\n\t\t\t\tif (!topFound) {\n\t\t\t\t\tif (topEdge - rows[i].getElement().offsetTop >= 0) {\n\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttopFound = true;\n\n\t\t\t\t\t\tif (bottomEdge - rows[i].getElement().offsetTop >= 0) {\n\t\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (bottomEdge - rows[i].getElement().offsetTop >= 0) {\n\t\t\t\t\t\tbottomRow = i;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\ttopRow = this.vDomTop;\n\t\tbottomRow = this.vDomBottom;\n\t}\n\n\treturn rows.slice(topRow, bottomRow + 1);\n};\n\n//repeat action accross display rows\nRowManager.prototype.displayRowIterator = function (callback) {\n\tthis.displayRows.forEach(callback);\n\n\tthis.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;\n};\n\n//return only actual rows (not group headers etc)\nRowManager.prototype.getRows = function (active) {\n\tvar rows;\n\n\tswitch (active) {\n\t\tcase \"active\":\n\t\t\trows = this.activeRows;\n\t\t\tbreak;\n\n\t\tcase \"display\":\n\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\tbreak;\n\n\t\tcase \"visible\":\n\t\t\trows = this.getVisibleRows(true);\n\t\t\tbreak;\n\n\t\tcase \"selected\":\n\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\trows = this.rows;\n\t}\n\n\treturn rows;\n};\n\n///////////////// Table Rendering /////////////////\n\n//trigger rerender of table in current position\nRowManager.prototype.reRenderInPosition = function (callback) {\n\tif (this.getRenderMode() == \"virtual\") {\n\n\t\tif (this.redrawBlock) {\n\t\t\tif (callback) {\n\t\t\t\tcallback();\n\t\t\t} else {\n\t\t\t\tthis.redrawBlockRederInPosition = true;\n\t\t\t}\n\t\t} else {\n\t\t\tvar scrollTop = this.element.scrollTop;\n\t\t\tvar topRow = false;\n\t\t\tvar topOffset = false;\n\n\t\t\tvar left = this.scrollLeft;\n\n\t\t\tvar rows = this.getDisplayRows();\n\n\t\t\tfor (var i = this.vDomTop; i <= this.vDomBottom; i++) {\n\n\t\t\t\tif (rows[i]) {\n\t\t\t\t\tvar diff = scrollTop - rows[i].getElement().offsetTop;\n\n\t\t\t\t\tif (topOffset === false || Math.abs(diff) < topOffset) {\n\t\t\t\t\t\ttopOffset = diff;\n\t\t\t\t\t\ttopRow = i;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (callback) {\n\t\t\t\tcallback();\n\t\t\t}\n\n\t\t\tthis._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);\n\n\t\t\tthis.scrollHorizontal(left);\n\t\t}\n\t} else {\n\t\tthis.renderTable();\n\n\t\tif (callback) {\n\t\t\tcallback();\n\t\t}\n\t}\n};\n\nRowManager.prototype.setRenderMode = function () {\n\n\tif (this.table.options.virtualDom) {\n\n\t\tthis.renderMode = \"virtual\";\n\n\t\tif (this.table.element.clientHeight || this.table.options.height) {\n\t\t\tthis.fixedHeight = true;\n\t\t} else {\n\t\t\tthis.fixedHeight = false;\n\t\t}\n\t} else {\n\t\tthis.renderMode = \"classic\";\n\t}\n};\n\nRowManager.prototype.getRenderMode = function () {\n\treturn this.renderMode;\n};\n\nRowManager.prototype.renderTable = function () {\n\n\tthis.table.options.renderStarted.call(this.table);\n\n\tthis.element.scrollTop = 0;\n\n\tswitch (this.renderMode) {\n\t\tcase \"classic\":\n\t\t\tthis._simpleRender();\n\t\t\tbreak;\n\n\t\tcase \"virtual\":\n\t\t\tthis._virtualRenderFill();\n\t\t\tbreak;\n\t}\n\n\tif (this.firstRender) {\n\t\tif (this.displayRowsCount) {\n\t\t\tthis.firstRender = false;\n\t\t\tthis.table.modules.layout.layout();\n\t\t} else {\n\t\t\tthis.renderEmptyScroll();\n\t\t}\n\t}\n\n\tif (this.table.modExists(\"frozenColumns\")) {\n\t\tthis.table.modules.frozenColumns.layout();\n\t}\n\n\tif (!this.displayRowsCount) {\n\t\tif (this.table.options.placeholder) {\n\n\t\t\tthis.table.options.placeholder.setAttribute(\"tabulator-render-mode\", this.renderMode);\n\n\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\n\t\t\tthis.table.options.placeholder.style.width = this.table.columnManager.getWidth() + \"px\";\n\t\t}\n\t}\n\n\tthis.table.options.renderComplete.call(this.table);\n};\n\n//simple render on heightless table\nRowManager.prototype._simpleRender = function () {\n\tthis._clearVirtualDom();\n\n\tif (this.displayRowsCount) {\n\t\tthis.checkClassicModeGroupHeaderWidth();\n\t} else {\n\t\tthis.renderEmptyScroll();\n\t}\n};\n\nRowManager.prototype.checkClassicModeGroupHeaderWidth = function () {\n\tvar self = this,\n\t element = this.tableElement,\n\t onlyGroupHeaders = true;\n\n\tself.getDisplayRows().forEach(function (row, index) {\n\t\tself.styleRow(row, index);\n\t\telement.appendChild(row.getElement());\n\t\trow.initialize(true);\n\n\t\tif (row.type !== \"group\") {\n\t\t\tonlyGroupHeaders = false;\n\t\t}\n\t});\n\n\tif (onlyGroupHeaders) {\n\t\telement.style.minWidth = self.table.columnManager.getWidth() + \"px\";\n\t} else {\n\t\telement.style.minWidth = \"\";\n\t}\n};\n\n//show scrollbars on empty table div\nRowManager.prototype.renderEmptyScroll = function () {\n\tif (this.table.options.placeholder) {\n\t\tthis.tableElement.style.display = \"none\";\n\t} else {\n\t\tthis.tableElement.style.minWidth = this.table.columnManager.getWidth() + \"px\";\n\t\t// this.tableElement.style.minHeight = \"1px\";\n\t\t// this.tableElement.style.visibility = \"hidden\";\n\t}\n};\n\nRowManager.prototype._clearVirtualDom = function () {\n\tvar element = this.tableElement;\n\n\tif (this.table.options.placeholder && this.table.options.placeholder.parentNode) {\n\t\tthis.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);\n\t}\n\n\t// element.children.detach();\n\twhile (element.firstChild) {\n\t\telement.removeChild(element.firstChild);\n\t}element.style.paddingTop = \"\";\n\telement.style.paddingBottom = \"\";\n\telement.style.minWidth = \"\";\n\telement.style.minHeight = \"\";\n\telement.style.display = \"\";\n\telement.style.visibility = \"\";\n\n\tthis.scrollTop = 0;\n\tthis.scrollLeft = 0;\n\tthis.vDomTop = 0;\n\tthis.vDomBottom = 0;\n\tthis.vDomTopPad = 0;\n\tthis.vDomBottomPad = 0;\n};\n\nRowManager.prototype.styleRow = function (row, index) {\n\tvar rowEl = row.getElement();\n\n\tif (index % 2) {\n\t\trowEl.classList.add(\"tabulator-row-even\");\n\t\trowEl.classList.remove(\"tabulator-row-odd\");\n\t} else {\n\t\trowEl.classList.add(\"tabulator-row-odd\");\n\t\trowEl.classList.remove(\"tabulator-row-even\");\n\t}\n};\n\n//full virtual render\nRowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {\n\tvar self = this,\n\t element = self.tableElement,\n\t holder = self.element,\n\t topPad = 0,\n\t rowsHeight = 0,\n\t topPadHeight = 0,\n\t i = 0,\n\t onlyGroupHeaders = true,\n\t rows = self.getDisplayRows();\n\n\tposition = position || 0;\n\n\toffset = offset || 0;\n\n\tif (!position) {\n\t\tself._clearVirtualDom();\n\t} else {\n\t\twhile (element.firstChild) {\n\t\t\telement.removeChild(element.firstChild);\n\t\t} //check if position is too close to bottom of table\n\t\tvar heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;\n\n\t\tif (heightOccupied < self.height) {\n\t\t\tposition -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);\n\n\t\t\tif (position < 0) {\n\t\t\t\tposition = 0;\n\t\t\t}\n\t\t}\n\n\t\t//calculate initial pad\n\t\ttopPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);\n\t\tposition -= topPad;\n\t}\n\n\tif (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {\n\n\t\tself.vDomTop = position;\n\n\t\tself.vDomBottom = position - 1;\n\n\t\twhile ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {\n\t\t\tvar index = self.vDomBottom + 1,\n\t\t\t row = rows[index],\n\t\t\t rowHeight = 0;\n\n\t\t\tself.styleRow(row, index);\n\n\t\t\telement.appendChild(row.getElement());\n\n\t\t\trow.initialize();\n\n\t\t\tif (!row.heightInitialized) {\n\t\t\t\trow.normalizeHeight(true);\n\t\t\t}\n\n\t\t\t// if(!row.initialized){\n\t\t\t// \trow.initialize(true);\n\t\t\t// }else{\n\t\t\t// \tif(!row.heightInitialized){\n\t\t\t// \t\trow.normalizeHeight(true);\n\t\t\t// \t}\n\t\t\t// }\n\n\t\t\trowHeight = row.getHeight();\n\n\t\t\tif (i < topPad) {\n\t\t\t\ttopPadHeight += rowHeight;\n\t\t\t} else {\n\t\t\t\trowsHeight += rowHeight;\n\t\t\t}\n\n\t\t\tif (rowHeight > this.vDomWindowBuffer) {\n\t\t\t\tthis.vDomWindowBuffer = rowHeight * 2;\n\t\t\t}\n\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tonlyGroupHeaders = false;\n\t\t\t}\n\n\t\t\tself.vDomBottom++;\n\t\t\ti++;\n\t\t}\n\n\t\tif (!position) {\n\t\t\tthis.vDomTopPad = 0;\n\t\t\t//adjust rowheight to match average of rendered elements\n\t\t\tself.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);\n\t\t\tself.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);\n\n\t\t\tself.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;\n\t\t} else {\n\t\t\tself.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;\n\t\t\tself.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);\n\t\t}\n\n\t\telement.style.paddingTop = self.vDomTopPad + \"px\";\n\t\telement.style.paddingBottom = self.vDomBottomPad + \"px\";\n\n\t\tif (forceMove) {\n\t\t\tthis.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);\n\t\t}\n\n\t\tthis.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);\n\n\t\t//adjust for horizontal scrollbar if present (and not at top of table)\n\t\tif (this.element.scrollWidth > this.element.offsetWidth && forceMove) {\n\t\t\tthis.scrollTop += this.element.offsetHeight - this.element.clientHeight;\n\t\t}\n\n\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\n\t\tholder.scrollTop = this.scrollTop;\n\n\t\telement.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + \"px\" : \"\";\n\n\t\tif (self.table.options.groupBy) {\n\t\t\tif (self.table.modules.layout.getMode() != \"fitDataFill\" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {\n\t\t\t\tself.tableElement.style.minWidth = self.table.columnManager.getWidth();\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.renderEmptyScroll();\n\t}\n\n\tif (!this.fixedHeight) {\n\t\tthis.adjustTableSize();\n\t}\n};\n\n//handle vertical scrolling\nRowManager.prototype.scrollVertical = function (dir) {\n\tvar topDiff = this.scrollTop - this.vDomScrollPosTop;\n\tvar bottomDiff = this.scrollTop - this.vDomScrollPosBottom;\n\tvar margin = this.vDomWindowBuffer * 2;\n\n\tif (-topDiff > margin || bottomDiff > margin) {\n\t\t//if big scroll redraw table;\n\t\tvar left = this.scrollLeft;\n\t\tthis._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));\n\t\tthis.scrollHorizontal(left);\n\t} else {\n\n\t\tif (dir) {\n\t\t\t//scrolling up\n\t\t\tif (topDiff < 0) {\n\n\t\t\t\tthis._addTopRow(-topDiff);\n\t\t\t}\n\n\t\t\tif (bottomDiff < 0) {\n\n\t\t\t\t//hide bottom row if needed\n\t\t\t\tif (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {\n\t\t\t\t\tthis._removeBottomRow(-bottomDiff);\n\t\t\t\t} else {\n\t\t\t\t\tthis.vDomScrollPosBottom = this.scrollTop;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\t//scrolling down\n\t\t\tif (topDiff >= 0) {\n\n\t\t\t\t//hide top row if needed\n\t\t\t\tif (this.scrollTop > this.vDomWindowBuffer) {\n\n\t\t\t\t\tthis._removeTopRow(topDiff);\n\t\t\t\t} else {\n\t\t\t\t\tthis.vDomScrollPosTop = this.scrollTop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (bottomDiff >= 0) {\n\n\t\t\t\tthis._addBottomRow(bottomDiff);\n\t\t\t}\n\t\t}\n\t}\n};\n\nRowManager.prototype._addTopRow = function (topDiff) {\n\tvar i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\tvar table = this.tableElement,\n\t rows = this.getDisplayRows();\n\n\tif (this.vDomTop) {\n\t\tvar index = this.vDomTop - 1,\n\t\t topRow = rows[index],\n\t\t topRowHeight = topRow.getHeight() || this.vDomRowHeight;\n\n\t\t//hide top row if needed\n\t\tif (topDiff >= topRowHeight) {\n\t\t\tthis.styleRow(topRow, index);\n\t\t\ttable.insertBefore(topRow.getElement(), table.firstChild);\n\t\t\tif (!topRow.initialized || !topRow.heightInitialized) {\n\t\t\t\tthis.vDomTopNewRows.push(topRow);\n\n\t\t\t\tif (!topRow.heightInitialized) {\n\t\t\t\t\ttopRow.clearCellHeight();\n\t\t\t\t}\n\t\t\t}\n\t\t\ttopRow.initialize();\n\n\t\t\tthis.vDomTopPad -= topRowHeight;\n\n\t\t\tif (this.vDomTopPad < 0) {\n\t\t\t\tthis.vDomTopPad = index * this.vDomRowHeight;\n\t\t\t}\n\n\t\t\tif (!index) {\n\t\t\t\tthis.vDomTopPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\t\t\tthis.vDomScrollPosTop -= topRowHeight;\n\t\t\tthis.vDomTop--;\n\t\t}\n\n\t\ttopDiff = -(this.scrollTop - this.vDomScrollPosTop);\n\n\t\tif (topRow.getHeight() > this.vDomWindowBuffer) {\n\t\t\tthis.vDomWindowBuffer = topRow.getHeight() * 2;\n\t\t}\n\n\t\tif (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {\n\t\t\tthis._addTopRow(topDiff, i + 1);\n\t\t} else {\n\t\t\tthis._quickNormalizeRowHeight(this.vDomTopNewRows);\n\t\t}\n\t}\n};\n\nRowManager.prototype._removeTopRow = function (topDiff) {\n\tvar table = this.tableElement,\n\t topRow = this.getDisplayRows()[this.vDomTop],\n\t topRowHeight = topRow.getHeight() || this.vDomRowHeight;\n\n\tif (topDiff >= topRowHeight) {\n\n\t\tvar rowEl = topRow.getElement();\n\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\tthis.vDomTopPad += topRowHeight;\n\t\ttable.style.paddingTop = this.vDomTopPad + \"px\";\n\t\tthis.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;\n\t\tthis.vDomTop++;\n\n\t\ttopDiff = this.scrollTop - this.vDomScrollPosTop;\n\n\t\tthis._removeTopRow(topDiff);\n\t}\n};\n\nRowManager.prototype._addBottomRow = function (bottomDiff) {\n\tvar i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n\tvar table = this.tableElement,\n\t rows = this.getDisplayRows();\n\n\tif (this.vDomBottom < this.displayRowsCount - 1) {\n\t\tvar index = this.vDomBottom + 1,\n\t\t bottomRow = rows[index],\n\t\t bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;\n\n\t\t//hide bottom row if needed\n\t\tif (bottomDiff >= bottomRowHeight) {\n\t\t\tthis.styleRow(bottomRow, index);\n\t\t\ttable.appendChild(bottomRow.getElement());\n\n\t\t\tif (!bottomRow.initialized || !bottomRow.heightInitialized) {\n\t\t\t\tthis.vDomBottomNewRows.push(bottomRow);\n\n\t\t\t\tif (!bottomRow.heightInitialized) {\n\t\t\t\t\tbottomRow.clearCellHeight();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbottomRow.initialize();\n\n\t\t\tthis.vDomBottomPad -= bottomRowHeight;\n\n\t\t\tif (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {\n\t\t\t\tthis.vDomBottomPad = 0;\n\t\t\t}\n\n\t\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\t\tthis.vDomScrollPosBottom += bottomRowHeight;\n\t\t\tthis.vDomBottom++;\n\t\t}\n\n\t\tbottomDiff = this.scrollTop - this.vDomScrollPosBottom;\n\n\t\tif (bottomRow.getHeight() > this.vDomWindowBuffer) {\n\t\t\tthis.vDomWindowBuffer = bottomRow.getHeight() * 2;\n\t\t}\n\n\t\tif (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {\n\t\t\tthis._addBottomRow(bottomDiff, i + 1);\n\t\t} else {\n\t\t\tthis._quickNormalizeRowHeight(this.vDomBottomNewRows);\n\t\t}\n\t}\n};\n\nRowManager.prototype._removeBottomRow = function (bottomDiff) {\n\tvar table = this.tableElement,\n\t bottomRow = this.getDisplayRows()[this.vDomBottom],\n\t bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;\n\n\tif (bottomDiff >= bottomRowHeight) {\n\n\t\tvar rowEl = bottomRow.getElement();\n\n\t\tif (rowEl.parentNode) {\n\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t}\n\n\t\tthis.vDomBottomPad += bottomRowHeight;\n\n\t\tif (this.vDomBottomPad < 0) {\n\t\t\tthis.vDomBottomPad = 0;\n\t\t}\n\n\t\ttable.style.paddingBottom = this.vDomBottomPad + \"px\";\n\t\tthis.vDomScrollPosBottom -= bottomRowHeight;\n\t\tthis.vDomBottom--;\n\n\t\tbottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);\n\n\t\tthis._removeBottomRow(bottomDiff);\n\t}\n};\n\nRowManager.prototype._quickNormalizeRowHeight = function (rows) {\n\trows.forEach(function (row) {\n\t\trow.calcHeight();\n\t});\n\n\trows.forEach(function (row) {\n\t\trow.setCellHeight();\n\t});\n\n\trows.length = 0;\n};\n\n//normalize height of active rows\nRowManager.prototype.normalizeHeight = function () {\n\tthis.activeRows.forEach(function (row) {\n\t\trow.normalizeHeight();\n\t});\n};\n\n//adjust the height of the table holder to fit in the Tabulator element\nRowManager.prototype.adjustTableSize = function () {\n\tvar initialHeight = this.element.clientHeight,\n\t modExists;\n\n\tif (this.renderMode === \"virtual\") {\n\n\t\tvar otherHeight = Math.floor(this.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));\n\n\t\tif (this.fixedHeight) {\n\t\t\tthis.element.style.minHeight = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\tthis.element.style.height = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t\tthis.element.style.maxHeight = \"calc(100% - \" + otherHeight + \"px)\";\n\t\t} else {\n\t\t\tthis.element.style.height = \"\";\n\t\t\tthis.element.style.height = this.table.element.clientHeight - otherHeight + \"px\";\n\t\t\tthis.element.scrollTop = this.scrollTop;\n\t\t}\n\n\t\tthis.height = this.element.clientHeight;\n\t\tthis.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;\n\n\t\t//check if the table has changed size when dealing with variable height tables\n\t\tif (!this.fixedHeight && initialHeight != this.element.clientHeight) {\n\t\t\tmodExists = this.table.modExists(\"resizeTable\");\n\n\t\t\tif (modExists && !this.table.modules.resizeTable.autoResize || !modExists) {\n\t\t\t\tthis.redraw();\n\t\t\t}\n\t\t}\n\t}\n};\n\n//renitialize all rows\nRowManager.prototype.reinitialize = function () {\n\tthis.rows.forEach(function (row) {\n\t\trow.reinitialize(true);\n\t});\n};\n\n//prevent table from being redrawn\nRowManager.prototype.blockRedraw = function () {\n\tthis.redrawBlock = true;\n\tthis.redrawBlockRestoreConfig = false;\n};\n\n//restore table redrawing\nRowManager.prototype.restoreRedraw = function () {\n\tthis.redrawBlock = false;\n\n\tif (this.redrawBlockRestoreConfig) {\n\t\tthis.refreshActiveData(this.redrawBlockRestoreConfig.stage, this.redrawBlockRestoreConfig.skipStage, this.redrawBlockRestoreConfig.renderInPosition);\n\n\t\tthis.redrawBlockRestoreConfig = false;\n\t} else {\n\t\tif (this.redrawBlockRederInPosition) {\n\t\t\tthis.reRenderInPosition();\n\t\t}\n\t}\n\n\tthis.redrawBlockRederInPosition = false;\n};\n\n//redraw table\nRowManager.prototype.redraw = function (force) {\n\tvar pos = 0,\n\t left = this.scrollLeft;\n\n\tthis.adjustTableSize();\n\n\tthis.table.tableWidth = this.table.element.clientWidth;\n\n\tif (!force) {\n\t\tif (this.renderMode == \"classic\") {\n\n\t\t\tif (this.table.options.groupBy) {\n\t\t\t\tthis.refreshActiveData(\"group\", false, false);\n\t\t\t} else {\n\t\t\t\tthis._simpleRender();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.reRenderInPosition();\n\t\t\tthis.scrollHorizontal(left);\n\t\t}\n\n\t\tif (!this.displayRowsCount) {\n\t\t\tif (this.table.options.placeholder) {\n\t\t\t\tthis.getElement().appendChild(this.table.options.placeholder);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.renderTable();\n\t}\n};\n\nRowManager.prototype.resetScroll = function () {\n\tthis.element.scrollLeft = 0;\n\tthis.element.scrollTop = 0;\n\n\tif (this.table.browser === \"ie\") {\n\t\tvar event = document.createEvent(\"Event\");\n\t\tevent.initEvent(\"scroll\", false, true);\n\t\tthis.element.dispatchEvent(event);\n\t} else {\n\t\tthis.element.dispatchEvent(new Event('scroll'));\n\t}\n};\n\nvar VDomHoz = function VDomHoz(table) {\n\tthis.table = table;\n\n\tthis.element = this.table.rowManager.tableElement;\n\tthis.holderEl = this.table.rowManager.element;\n\n\tthis.leftCol = 0;\n\tthis.rightCol = 0;\n\tthis.scrollLeft = 0;\n\n\tthis.vDomScrollPosLeft = 0;\n\tthis.vDomScrollPosRight = 0;\n\n\tthis.vDomPadLeft = 0;\n\tthis.vDomPadRight = 0;\n\n\tthis.fitDataColAvg = 0;\n\n\tthis.window = 200; //pixel margin to make column visible before it is shown on screen\n\n\tthis.initialized = false;\n\n\tthis.columns = [];\n\n\tif (this.compatabilityCheck()) {\n\t\tthis.initialize();\n\t}\n};\n\nVDomHoz.prototype.compatabilityCheck = function () {\n\tvar options = this.table.options,\n\t frozen = false,\n\t ok = true;\n\n\tif (options.layout == \"fitDataTable\") {\n\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with fitDataTable layout mode\");\n\t\tok = false;\n\t}\n\n\tif (options.responsiveLayout) {\n\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with responsive columns\");\n\t\tok = false;\n\t}\n\n\tif (this.table.rtl) {\n\t\tconsole.warn(\"Horizontal Vitrual DOM is not currently compatible with RTL text direction\");\n\t\tok = false;\n\t}\n\n\t// if(options.rowFormatter){\n\t// \tconsole.warn(\"Horizontal Vitrual DOM is not compatible with row formatters\");\n\t// \tok = false;\n\t// }\n\n\tif (options.columns) {\n\t\tfrozen = options.columns.find(function (col) {\n\t\t\treturn col.frozen;\n\t\t});\n\n\t\tif (frozen) {\n\t\t\tconsole.warn(\"Horizontal Vitrual DOM is not compatible with frozen columns\");\n\t\t\tok = false;\n\t\t}\n\t}\n\n\tif (!ok) {\n\t\toptions.virtualDomHoz = false;\n\t}\n\n\treturn ok;\n};\n\nVDomHoz.prototype.initialize = function () {\n\tvar _this17 = this;\n\n\tthis.holderEl.addEventListener(\"scroll\", function () {\n\t\tvar left = _this17.holderEl.scrollLeft;\n\n\t\tif (_this17.scrollLeft != left) {\n\t\t\t_this17.scrollLeft = left;\n\t\t\t_this17.scroll(left - (_this17.vDomScrollPosLeft + _this17.window));\n\t\t}\n\t});\n};\n\nVDomHoz.prototype.deinitialize = function () {\n\tthis.initialized = false;\n};\n\nVDomHoz.prototype.clear = function () {\n\tthis.columns = [];\n\n\tthis.leftCol = -1;\n\tthis.rightCol = 0;\n\n\tthis.vDomScrollPosLeft = 0;\n\tthis.vDomScrollPosRight = 0;\n\tthis.vDomPadLeft = 0;\n\tthis.vDomPadRight = 0;\n};\n\nVDomHoz.prototype.dataChange = function () {\n\tvar change = false,\n\t collsWidth = 0,\n\t colEnd = 0,\n\t group,\n\t row,\n\t rowEl;\n\n\tif (this.table.options.layout === \"fitData\") {\n\t\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\t\tif (!column.definition.width && column.visible) {\n\t\t\t\tchange = true;\n\t\t\t}\n\t\t});\n\n\t\tif (change) {\n\t\t\tif (change && this.table.rowManager.getDisplayRows().length) {\n\t\t\t\t// this.table.vdomHoz.deinitialize();\n\n\t\t\t\tthis.vDomScrollPosRight = this.scrollLeft + this.holderEl.clientWidth + this.window;\n\n\t\t\t\tif (this.table.options.groupBy) {\n\t\t\t\t\tgroup = this.table.modules.groupRows.getGroups(false)[0];\n\n\t\t\t\t\trow = group.getRows(false)[0];\n\t\t\t\t} else {\n\t\t\t\t\trow = this.table.rowManager.getDisplayRows()[0];\n\t\t\t\t}\n\n\t\t\t\tif (row) {\n\n\t\t\t\t\trowEl = row.getElement();\n\n\t\t\t\t\trow.generateCells();\n\n\t\t\t\t\tthis.element.appendChild(rowEl);\n\n\t\t\t\t\tfor (var colEnd = 0; colEnd < row.cells.length; colEnd++) {\n\t\t\t\t\t\tvar cell = row.cells[colEnd];\n\t\t\t\t\t\trowEl.appendChild(cell.getElement());\n\n\t\t\t\t\t\tcell.column.reinitializeWidth();\n\n\t\t\t\t\t\tcollsWidth += cell.column.getWidth();\n\n\t\t\t\t\t\tif (collsWidth > this.vDomScrollPosRight) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\t\t\t\tthis.fitDataColAvg = Math.floor(collsWidth / (colEnd + 1));\n\n\t\t\t\t\tfor (colEnd; colEnd < this.table.columnManager.columnsByIndex.length; colEnd++) {\n\t\t\t\t\t\tthis.table.columnManager.columnsByIndex[colEnd].setWidth(this.fitDataColAvg);\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.reinitialize(false, true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (this.table.options.layout === \"fitColumns\") {\n\t\t\tthis.table.modules.layout.layout();\n\t\t\tthis.table.vdomHoz.reinitialize(false, true);\n\t\t}\n\t}\n};\n\nVDomHoz.prototype.fitDataLayoutOverride = function () {\n\tfor (var _i5 = this.leftCol; _i5 <= this.rightCol; _i5++) {\n\t\tthis.columns[_i5].reinitializeWidth();\n\t}\n};\n\nVDomHoz.prototype.reinitialize = function (update, blockRedraw) {\n\tvar _this18 = this;\n\n\tvar old = {\n\t\tcols: this.columns,\n\t\tleftCol: this.leftCol,\n\t\trightCol: this.rightCol\n\t};\n\n\tif (update && !this.initialized) {\n\t\treturn;\n\t}\n\n\tthis.clear();\n\n\tthis.scrollLeft = this.holderEl.scrollLeft;\n\n\tthis.vDomScrollPosLeft = this.scrollLeft - this.window;\n\tthis.vDomScrollPosRight = this.scrollLeft + this.holderEl.clientWidth + this.window;\n\n\tvar colPos = 0;\n\n\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\tvar config = {};\n\n\t\tif (column.visible) {\n\t\t\tvar width = column.getWidth();\n\n\t\t\tconfig.leftPos = colPos;\n\t\t\tconfig.rightPos = colPos + width;\n\n\t\t\tif (colPos + width > _this18.vDomScrollPosLeft && colPos < _this18.vDomScrollPosRight) {\n\t\t\t\t//column is visible\n\n\t\t\t\tif (_this18.leftCol == -1) {\n\t\t\t\t\t_this18.leftCol = _this18.columns.length;\n\t\t\t\t\t_this18.vDomPadLeft = colPos;\n\t\t\t\t}\n\n\t\t\t\t_this18.rightCol = _this18.columns.length;\n\t\t\t} else {\n\t\t\t\t// column is hidden\n\t\t\t\tif (_this18.leftCol !== -1) {\n\t\t\t\t\t_this18.vDomPadRight += width;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_this18.columns.push(column);\n\n\t\t\tcolumn.modules.vdomHoz = config;\n\n\t\t\tcolPos += width;\n\t\t}\n\t});\n\n\tthis.element.style.paddingLeft = this.vDomPadLeft + \"px\";\n\tthis.element.style.paddingRight = this.vDomPadRight + \"px\";\n\n\tthis.initialized = true;\n\n\tif (!blockRedraw) {\n\t\tif (!update || this.reinitChanged(old)) {\n\t\t\tthis.renitializeRows();\n\t\t}\n\t}\n\n\tthis.holderEl.scrollLeft = this.scrollLeft;\n};\n\nVDomHoz.prototype.reinitChanged = function (old) {\n\tvar _this19 = this;\n\n\tvar match = true;\n\n\tif (old.cols.length !== this.columns.length || old.leftCol !== this.leftCol || old.rightCol !== this.rightCol) {\n\t\treturn true;\n\t}\n\n\told.cols.forEach(function (col, i) {\n\t\tif (col !== _this19.columns[i]) {\n\t\t\tmatch = false;\n\t\t}\n\t});\n\n\treturn !match;\n};\n\nVDomHoz.prototype.renitializeRows = function () {\n\tvar _this20 = this;\n\n\tvar rows = this.table.rowManager.getVisibleRows();\n\trows.forEach(function (row) {\n\t\t_this20.reinitializeRow(row, true);\n\t});\n};\n\nVDomHoz.prototype.scroll = function (diff) {\n\tthis.vDomScrollPosLeft += diff;\n\tthis.vDomScrollPosRight += diff;\n\n\tif (diff > this.holderEl.clientWidth * .8) {\n\t\tthis.reinitialize();\n\t} else {\n\t\tif (diff > 0) {\n\t\t\t//scroll right\n\t\t\tthis.addColRight();\n\t\t\tthis.removeColLeft();\n\t\t} else {\n\t\t\t//scroll left\n\t\t\tthis.addColLeft();\n\t\t\tthis.removeColRight();\n\t\t}\n\t}\n};\n\nVDomHoz.prototype.colPositionAdjust = function (start, end, diff) {\n\tfor (var _i6 = start; _i6 < end; _i6++) {\n\t\tvar column = this.columns[_i6];\n\n\t\tcolumn.modules.vdomHoz.leftPos -= diff;\n\t\tcolumn.modules.vdomHoz.rightPos -= diff;\n\t}\n};\n\nVDomHoz.prototype.addColRight = function () {\n\tvar column = this.columns[this.rightCol + 1],\n\t rows,\n\t oldWidth,\n\t widthDiff;\n\n\tif (column && column.modules.vdomHoz.leftPos <= this.vDomScrollPosRight) {\n\n\t\trows = this.table.rowManager.getVisibleRows();\n\n\t\trows.forEach(function (row) {\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\t\tcell.cellRendered();\n\t\t\t}\n\t\t});\n\n\t\tif (this.fitDataColAvg) {\n\n\t\t\toldWidth = column.getWidth();\n\n\t\t\tif (oldWidth === this.fitDataColAvg) {\n\t\t\t\tcolumn.reinitializeWidth();\n\n\t\t\t\twidthDiff = oldWidth - column.getWidth();\n\n\t\t\t\tif (widthDiff) {\n\t\t\t\t\tcolumn.modules.vdomHoz.rightPos -= widthDiff;\n\t\t\t\t\tthis.colPositionAdjust(this.rightCol + 1, this.columns.length, widthDiff);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.rightCol++;\n\n\t\tif (this.rightCol >= this.columns.length - 1) {\n\t\t\tthis.vDomPadRight = 0;\n\t\t} else {\n\t\t\tthis.vDomPadRight -= column.getWidth();\n\t\t}\n\n\t\tthis.element.style.paddingRight = this.vDomPadRight + \"px\";\n\n\t\tthis.addColRight();\n\t}\n};\n\nVDomHoz.prototype.addColLeft = function () {\n\tvar column = this.columns[this.leftCol - 1],\n\t rows;\n\n\tif (column && column.modules.vdomHoz.rightPos >= this.vDomScrollPosLeft) {\n\t\tvar rows = this.table.rowManager.getVisibleRows();\n\n\t\trows.forEach(function (row) {\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\trow.getElement().prepend(cell.getElement());\n\t\t\t\tcell.cellRendered();\n\t\t\t}\n\t\t});\n\n\t\tif (!this.leftCol) {\n\t\t\tthis.vDomPadLeft = 0;\n\t\t} else {\n\t\t\tthis.vDomPadLeft -= column.getWidth();\n\t\t}\n\n\t\tthis.element.style.paddingLeft = this.vDomPadLeft + \"px\";\n\n\t\tthis.leftCol--;\n\n\t\tthis.addColLeft();\n\t}\n};\n\nVDomHoz.prototype.removeColRight = function (column) {\n\tvar column = this.columns[this.rightCol],\n\t rows;\n\n\tif (column && column.modules.vdomHoz.leftPos > this.vDomScrollPosRight) {\n\t\trows = this.table.rowManager.getVisibleRows();\n\n\t\tcolumn.modules.vdomHoz.visible = false;\n\n\t\trows.forEach(function (row) {\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t}\n\t\t});\n\n\t\tthis.vDomPadRight += column.getWidth();\n\t\tthis.element.style.paddingRight = this.vDomPadRight + \"px\";\n\n\t\tthis.rightCol--;\n\n\t\tthis.removeColRight();\n\t}\n};\n\nVDomHoz.prototype.removeColLeft = function () {\n\tvar column = this.columns[this.leftCol],\n\t rows;\n\n\tif (column && column.modules.vdomHoz.rightPos < this.vDomScrollPosLeft) {\n\n\t\trows = this.table.rowManager.getVisibleRows();\n\n\t\trows.forEach(function (row) {\n\t\t\tif (row.type !== \"group\") {\n\t\t\t\tvar cell = row.getCell(column);\n\t\t\t\trow.getElement().removeChild(cell.getElement());\n\t\t\t}\n\t\t});\n\n\t\tthis.vDomPadLeft += column.getWidth();\n\t\tthis.element.style.paddingLeft = this.vDomPadLeft + \"px\";\n\n\t\tthis.leftCol++;\n\n\t\tthis.removeColLeft();\n\t}\n};\n\nVDomHoz.prototype.initializeRow = function (row) {\n\tif (row.type !== \"group\") {\n\t\trow.modules.vdomHoz = {\n\t\t\tleftCol: this.leftCol,\n\t\t\trightCol: this.rightCol\n\t\t};\n\n\t\tfor (var _i7 = this.leftCol; _i7 <= this.rightCol; _i7++) {\n\t\t\tvar column = this.columns[_i7];\n\n\t\t\tif (column && column.visible) {\n\t\t\t\tvar cell = row.getCell(column);\n\n\t\t\t\trow.getElement().appendChild(cell.getElement());\n\t\t\t\tcell.cellRendered();\n\t\t\t}\n\t\t}\n\t}\n};\n\nVDomHoz.prototype.reinitializeRow = function (row, force) {\n\tif (row.type !== \"group\") {\n\t\tif (force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol) {\n\t\t\tvar rowEl = row.getElement();\n\t\t\twhile (rowEl.firstChild) {\n\t\t\t\trowEl.removeChild(rowEl.firstChild);\n\t\t\t}this.initializeRow(row);\n\t\t}\n\t}\n};\n//public row object\nvar RowComponent = function RowComponent(row) {\n\tthis._row = row;\n};\n\nRowComponent.prototype.getData = function (transform) {\n\treturn this._row.getData(transform);\n};\n\nRowComponent.prototype.getElement = function () {\n\treturn this._row.getElement();\n};\n\nRowComponent.prototype.getCells = function () {\n\tvar cells = [];\n\n\tthis._row.getCells().forEach(function (cell) {\n\t\tcells.push(cell.getComponent());\n\t});\n\n\treturn cells;\n};\n\nRowComponent.prototype.getCell = function (column) {\n\tvar cell = this._row.getCell(column);\n\treturn cell ? cell.getComponent() : false;\n};\n\nRowComponent.prototype.getIndex = function () {\n\treturn this._row.getData(\"data\")[this._row.table.options.index];\n};\n\nRowComponent.prototype.getPosition = function (active) {\n\treturn this._row.table.rowManager.getRowPosition(this._row, active);\n};\n\nRowComponent.prototype.delete = function () {\n\treturn this._row.delete();\n};\n\nRowComponent.prototype.scrollTo = function () {\n\treturn this._row.table.rowManager.scrollToRow(this._row);\n};\n\nRowComponent.prototype.pageTo = function () {\n\tif (this._row.table.modExists(\"page\", true)) {\n\t\treturn this._row.table.modules.page.setPageToRow(this._row);\n\t}\n};\n\nRowComponent.prototype.move = function (to, after) {\n\tthis._row.moveToRow(to, after);\n};\n\nRowComponent.prototype.update = function (data) {\n\treturn this._row.updateData(data);\n};\n\nRowComponent.prototype.normalizeHeight = function () {\n\tthis._row.normalizeHeight(true);\n};\n\nRowComponent.prototype.select = function () {\n\tthis._row.table.modules.selectRow.selectRows(this._row);\n};\n\nRowComponent.prototype.deselect = function () {\n\tthis._row.table.modules.selectRow.deselectRows(this._row);\n};\n\nRowComponent.prototype.toggleSelect = function () {\n\tthis._row.table.modules.selectRow.toggleRow(this._row);\n};\n\nRowComponent.prototype.isSelected = function () {\n\treturn this._row.table.modules.selectRow.isRowSelected(this._row);\n};\n\nRowComponent.prototype._getSelf = function () {\n\treturn this._row;\n};\n\nRowComponent.prototype.validate = function () {\n\treturn this._row.validate();\n};\n\nRowComponent.prototype.freeze = function () {\n\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\t\tthis._row.table.modules.frozenRows.freezeRow(this._row);\n\t}\n};\n\nRowComponent.prototype.unfreeze = function () {\n\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\t\tthis._row.table.modules.frozenRows.unfreezeRow(this._row);\n\t}\n};\n\nRowComponent.prototype.isFrozen = function () {\n\tif (this._row.table.modExists(\"frozenRows\", true)) {\n\t\tvar index = this._row.table.modules.frozenRows.rows.indexOf(this._row);\n\t\treturn index > -1;\n\t}\n\n\treturn false;\n};\n\nRowComponent.prototype.treeCollapse = function () {\n\tif (this._row.table.modExists(\"dataTree\", true)) {\n\t\tthis._row.table.modules.dataTree.collapseRow(this._row);\n\t}\n};\n\nRowComponent.prototype.treeExpand = function () {\n\tif (this._row.table.modExists(\"dataTree\", true)) {\n\t\tthis._row.table.modules.dataTree.expandRow(this._row);\n\t}\n};\n\nRowComponent.prototype.treeToggle = function () {\n\tif (this._row.table.modExists(\"dataTree\", true)) {\n\t\tthis._row.table.modules.dataTree.toggleRow(this._row);\n\t}\n};\n\nRowComponent.prototype.getTreeParent = function () {\n\tif (this._row.table.modExists(\"dataTree\", true)) {\n\t\treturn this._row.table.modules.dataTree.getTreeParent(this._row);\n\t}\n\n\treturn false;\n};\n\nRowComponent.prototype.getTreeChildren = function () {\n\tif (this._row.table.modExists(\"dataTree\", true)) {\n\t\treturn this._row.table.modules.dataTree.getTreeChildren(this._row, true);\n\t}\n\n\treturn false;\n};\n\nRowComponent.prototype.addTreeChild = function (data, pos, index) {\n\tif (this._row.table.modExists(\"dataTree\", true)) {\n\t\treturn this._row.table.modules.dataTree.addTreeChildRow(this._row, data, pos, index);\n\t}\n\n\treturn false;\n};\n\nRowComponent.prototype.reformat = function () {\n\treturn this._row.reinitialize();\n};\n\nRowComponent.prototype.getGroup = function () {\n\treturn this._row.getGroup().getComponent();\n};\n\nRowComponent.prototype.getTable = function () {\n\treturn this._row.table;\n};\n\nRowComponent.prototype.getNextRow = function () {\n\tvar row = this._row.nextRow();\n\treturn row ? row.getComponent() : row;\n};\n\nRowComponent.prototype.getPrevRow = function () {\n\tvar row = this._row.prevRow();\n\treturn row ? row.getComponent() : row;\n};\n\nvar Row = function Row(data, parent) {\n\tvar type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"row\";\n\n\tthis.table = parent.table;\n\tthis.parent = parent;\n\tthis.data = {};\n\tthis.type = type; //type of element\n\tthis.element = false;\n\tthis.modules = {}; //hold module variables;\n\tthis.cells = [];\n\tthis.height = 0; //hold element height\n\tthis.heightStyled = \"\"; //hold element height prestyled to improve render efficiency\n\tthis.manualHeight = false; //user has manually set row height\n\tthis.outerHeight = 0; //holde lements outer height\n\tthis.initialized = false; //element has been rendered\n\tthis.heightInitialized = false; //element has resized cells to fit\n\n\tthis.component = null;\n\n\tthis.created = false;\n\n\tthis.setData(data);\n};\n\nRow.prototype.create = function () {\n\tif (!this.created) {\n\t\tthis.created = true;\n\t\tthis.generateElement();\n\t}\n};\n\nRow.prototype.createElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-row\");\n\tel.setAttribute(\"role\", \"row\");\n\n\tthis.element = el;\n};\n\nRow.prototype.getElement = function () {\n\tthis.create();\n\treturn this.element;\n};\n\nRow.prototype.detachElement = function () {\n\tif (this.element && this.element.parentNode) {\n\t\tthis.element.parentNode.removeChild(this.element);\n\t}\n};\n\nRow.prototype.generateElement = function () {\n\tvar self = this,\n\t dblTap,\n\t tapHold,\n\t tap;\n\n\tthis.createElement();\n\n\t//set row selection characteristics\n\tif (self.table.options.selectable !== false && self.table.modExists(\"selectRow\")) {\n\t\tself.table.modules.selectRow.initializeRow(this);\n\t}\n\n\t//setup movable rows\n\tif (self.table.options.movableRows !== false && self.table.modExists(\"moveRow\")) {\n\t\tself.table.modules.moveRow.initializeRow(this);\n\t}\n\n\t//setup data tree\n\tif (self.table.options.dataTree !== false && self.table.modExists(\"dataTree\")) {\n\t\tself.table.modules.dataTree.initializeRow(this);\n\t}\n\n\t//setup column colapse container\n\tif (self.table.options.responsiveLayout === \"collapse\" && self.table.modExists(\"responsiveLayout\")) {\n\t\tself.table.modules.responsiveLayout.initializeRow(this);\n\t}\n\n\t//set column menu\n\tif ((self.table.options.rowContextMenu || self.table.options.rowClickMenu) && this.table.modExists(\"menu\")) {\n\t\tself.table.modules.menu.initializeRow(this);\n\t}\n\n\t//handle row click events\n\tif (self.table.options.rowClick) {\n\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\tself.table.options.rowClick(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.table.options.rowDblClick) {\n\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\tself.table.options.rowDblClick(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.table.options.rowContext) {\n\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\tself.table.options.rowContext(e, self.getComponent());\n\t\t});\n\t}\n\n\t//handle mouse events\n\tif (self.table.options.rowMouseEnter) {\n\t\tself.element.addEventListener(\"mouseenter\", function (e) {\n\t\t\tself.table.options.rowMouseEnter(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.table.options.rowMouseLeave) {\n\t\tself.element.addEventListener(\"mouseleave\", function (e) {\n\t\t\tself.table.options.rowMouseLeave(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.table.options.rowMouseOver) {\n\t\tself.element.addEventListener(\"mouseover\", function (e) {\n\t\t\tself.table.options.rowMouseOver(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.table.options.rowMouseOut) {\n\t\tself.element.addEventListener(\"mouseout\", function (e) {\n\t\t\tself.table.options.rowMouseOut(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.table.options.rowMouseMove) {\n\t\tself.element.addEventListener(\"mousemove\", function (e) {\n\t\t\tself.table.options.rowMouseMove(e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.table.options.rowTap) {\n\n\t\ttap = false;\n\n\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\ttap = true;\n\t\t}, { passive: true });\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\tif (tap) {\n\t\t\t\tself.table.options.rowTap(e, self.getComponent());\n\t\t\t}\n\n\t\t\ttap = false;\n\t\t});\n\t}\n\n\tif (self.table.options.rowDblTap) {\n\n\t\tdblTap = null;\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\tif (dblTap) {\n\t\t\t\tclearTimeout(dblTap);\n\t\t\t\tdblTap = null;\n\n\t\t\t\tself.table.options.rowDblTap(e, self.getComponent());\n\t\t\t} else {\n\n\t\t\t\tdblTap = setTimeout(function () {\n\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\tdblTap = null;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (self.table.options.rowTapHold) {\n\n\t\ttapHold = null;\n\n\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\tclearTimeout(tapHold);\n\n\t\t\ttapHold = setTimeout(function () {\n\t\t\t\tclearTimeout(tapHold);\n\t\t\t\ttapHold = null;\n\t\t\t\ttap = false;\n\t\t\t\tself.table.options.rowTapHold(e, self.getComponent());\n\t\t\t}, 1000);\n\t\t}, { passive: true });\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\tclearTimeout(tapHold);\n\t\t\ttapHold = null;\n\t\t});\n\t}\n};\n\nRow.prototype.generateCells = function () {\n\tthis.cells = this.table.columnManager.generateCells(this);\n};\n\n//functions to setup on first render\nRow.prototype.initialize = function (force) {\n\tvar _this21 = this;\n\n\tthis.create();\n\n\tif (!this.initialized || force) {\n\n\t\tthis.deleteCells();\n\n\t\twhile (this.element.firstChild) {\n\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t} //handle frozen cells\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\t\t\tthis.table.modules.frozenColumns.layoutRow(this);\n\t\t}\n\n\t\tthis.generateCells();\n\n\t\tif (this.table.options.virtualDomHoz && this.table.vdomHoz.initialized) {\n\t\t\tthis.table.vdomHoz.initializeRow(this);\n\t\t} else {\n\t\t\tthis.cells.forEach(function (cell) {\n\t\t\t\t_this21.element.appendChild(cell.getElement());\n\t\t\t\tcell.cellRendered();\n\t\t\t});\n\t\t}\n\n\t\tif (force) {\n\t\t\tthis.normalizeHeight();\n\t\t}\n\n\t\t//setup movable rows\n\t\tif (this.table.options.dataTree && this.table.modExists(\"dataTree\")) {\n\t\t\tthis.table.modules.dataTree.layoutRow(this);\n\t\t}\n\n\t\t//setup column colapse container\n\t\tif (this.table.options.responsiveLayout === \"collapse\" && this.table.modExists(\"responsiveLayout\")) {\n\t\t\tthis.table.modules.responsiveLayout.layoutRow(this);\n\t\t}\n\n\t\tif (this.table.options.rowFormatter) {\n\t\t\tthis.table.options.rowFormatter(this.getComponent());\n\t\t}\n\n\t\t//set resizable handles\n\t\tif (this.table.options.resizableRows && this.table.modExists(\"resizeRows\")) {\n\t\t\tthis.table.modules.resizeRows.initializeRow(this);\n\t\t}\n\n\t\tthis.initialized = true;\n\t} else {\n\t\tif (this.table.options.virtualDomHoz) {\n\t\t\tthis.table.vdomHoz.reinitializeRow(this);\n\t\t}\n\t}\n};\n\nRow.prototype.reinitializeHeight = function () {\n\tthis.heightInitialized = false;\n\n\tif (this.element && this.element.offsetParent !== null) {\n\t\tthis.normalizeHeight(true);\n\t}\n};\n\nRow.prototype.reinitialize = function (children) {\n\tthis.initialized = false;\n\tthis.heightInitialized = false;\n\n\tif (!this.manualHeight) {\n\t\tthis.height = 0;\n\t\tthis.heightStyled = \"\";\n\t}\n\n\tif (this.element && this.element.offsetParent !== null) {\n\t\tthis.initialize(true);\n\t}\n\n\tif (this.table.options.dataTree && this.table.modExists(\"dataTree\", true)) {\n\t\tthis.table.modules.dataTree.getTreeChildren(this, false, true).forEach(function (child) {\n\t\t\tchild.reinitialize(true);\n\t\t});\n\t}\n};\n\n//get heights when doing bulk row style calcs in virtual DOM\nRow.prototype.calcHeight = function (force) {\n\n\tvar maxHeight = 0,\n\t minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;\n\n\tthis.cells.forEach(function (cell) {\n\t\tvar height = cell.getHeight();\n\t\tif (height > maxHeight) {\n\t\t\tmaxHeight = height;\n\t\t}\n\t});\n\n\tif (force) {\n\t\tthis.height = Math.max(maxHeight, minHeight);\n\t} else {\n\t\tthis.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);\n\t}\n\n\tthis.heightStyled = this.height ? this.height + \"px\" : \"\";\n\tthis.outerHeight = this.element.offsetHeight;\n};\n\n//set of cells\nRow.prototype.setCellHeight = function () {\n\tthis.cells.forEach(function (cell) {\n\t\tcell.setHeight();\n\t});\n\n\tthis.heightInitialized = true;\n};\n\nRow.prototype.clearCellHeight = function () {\n\tthis.cells.forEach(function (cell) {\n\t\tcell.clearHeight();\n\t});\n};\n\n//normalize the height of elements in the row\nRow.prototype.normalizeHeight = function (force) {\n\n\tif (force) {\n\t\tthis.clearCellHeight();\n\t}\n\n\tthis.calcHeight(force);\n\n\tthis.setCellHeight();\n};\n\n// Row.prototype.setHeight = function(height){\n// \tthis.height = height;\n\n// \tthis.setCellHeight();\n// };\n\n//set height of rows\nRow.prototype.setHeight = function (height, force) {\n\tif (this.height != height || force) {\n\n\t\tthis.manualHeight = true;\n\n\t\tthis.height = height;\n\t\tthis.heightStyled = height ? height + \"px\" : \"\";\n\n\t\tthis.setCellHeight();\n\n\t\t// this.outerHeight = this.element.outerHeight();\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n};\n\n//return rows outer height\nRow.prototype.getHeight = function () {\n\treturn this.outerHeight;\n};\n\n//return rows outer Width\nRow.prototype.getWidth = function () {\n\treturn this.element.offsetWidth;\n};\n\n//////////////// Cell Management /////////////////\n\nRow.prototype.deleteCell = function (cell) {\n\tvar index = this.cells.indexOf(cell);\n\n\tif (index > -1) {\n\t\tthis.cells.splice(index, 1);\n\t}\n};\n\n//////////////// Data Management /////////////////\n\nRow.prototype.setData = function (data) {\n\tif (this.table.modExists(\"mutator\")) {\n\t\tdata = this.table.modules.mutator.transformRow(data, \"data\");\n\t}\n\n\tthis.data = data;\n\n\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {\n\t\tthis.table.modules.reactiveData.watchRow(this);\n\t}\n};\n\n//update the rows data\nRow.prototype.updateData = function (updatedData) {\n\tvar _this22 = this;\n\n\tvar visible = this.element && Tabulator.prototype.helpers.elVisible(this.element),\n\t tempData = {},\n\t newRowData;\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tif (typeof updatedData === \"string\") {\n\t\t\tupdatedData = JSON.parse(updatedData);\n\t\t}\n\n\t\tif (_this22.table.options.reactiveData && _this22.table.modExists(\"reactiveData\", true)) {\n\t\t\t_this22.table.modules.reactiveData.block();\n\t\t}\n\n\t\t//mutate incomming data if needed\n\t\tif (_this22.table.modExists(\"mutator\")) {\n\n\t\t\ttempData = Object.assign(tempData, _this22.data);\n\t\t\ttempData = Object.assign(tempData, updatedData);\n\n\t\t\tnewRowData = _this22.table.modules.mutator.transformRow(tempData, \"data\", updatedData);\n\t\t} else {\n\t\t\tnewRowData = updatedData;\n\t\t}\n\n\t\t//set data\n\t\tfor (var attrname in newRowData) {\n\t\t\t_this22.data[attrname] = newRowData[attrname];\n\t\t}\n\n\t\tif (_this22.table.options.reactiveData && _this22.table.modExists(\"reactiveData\", true)) {\n\t\t\t_this22.table.modules.reactiveData.unblock();\n\t\t}\n\n\t\t//update affected cells only\n\t\tfor (var attrname in updatedData) {\n\n\t\t\tvar columns = _this22.table.columnManager.getColumnsByFieldRoot(attrname);\n\n\t\t\tcolumns.forEach(function (column) {\n\t\t\t\tvar cell = _this22.getCell(column.getField());\n\n\t\t\t\tif (cell) {\n\t\t\t\t\tvar value = column.getFieldValue(newRowData);\n\t\t\t\t\tif (cell.getValue() != value) {\n\t\t\t\t\t\tcell.setValueProcessData(value);\n\n\t\t\t\t\t\tif (visible) {\n\t\t\t\t\t\t\tcell.cellRendered();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (_this22.table.options.groupUpdateOnCellEdit && _this22.table.options.groupBy && _this22.table.modExists(\"groupRows\")) {\n\t\t\t_this22.table.modules.groupRows.reassignRowToGroup(_this22.row);\n\t\t}\n\n\t\t//Partial reinitialization if visible\n\t\tif (visible) {\n\t\t\t_this22.normalizeHeight(true);\n\n\t\t\tif (_this22.table.options.rowFormatter) {\n\t\t\t\t_this22.table.options.rowFormatter(_this22.getComponent());\n\t\t\t}\n\t\t} else {\n\t\t\t_this22.initialized = false;\n\t\t\t_this22.height = 0;\n\t\t\t_this22.heightStyled = \"\";\n\t\t}\n\n\t\tif (_this22.table.options.dataTree !== false && _this22.table.modExists(\"dataTree\") && _this22.table.modules.dataTree.redrawNeeded(updatedData)) {\n\t\t\t_this22.table.modules.dataTree.initializeRow(_this22);\n\n\t\t\tif (visible) {\n\t\t\t\t_this22.table.modules.dataTree.layoutRow(_this22);\n\t\t\t\t_this22.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t\t\t}\n\t\t}\n\n\t\t//this.reinitialize();\n\n\t\t_this22.table.options.rowUpdated.call(_this22.table, _this22.getComponent());\n\n\t\tif (_this22.table.options.dataChanged) {\n\t\t\t_this22.table.options.dataChanged.call(_this22.table, _this22.table.rowManager.getData());\n\t\t}\n\n\t\tresolve();\n\t});\n};\n\nRow.prototype.getData = function (transform) {\n\tif (transform) {\n\t\tif (this.table.modExists(\"accessor\")) {\n\t\t\treturn this.table.modules.accessor.transformRow(this, transform);\n\t\t}\n\t}\n\n\treturn this.data;\n};\n\nRow.prototype.getCell = function (column) {\n\tvar match = false;\n\n\tcolumn = this.table.columnManager.findColumn(column);\n\n\tmatch = this.cells.find(function (cell) {\n\t\treturn cell.column === column;\n\t});\n\n\treturn match;\n};\n\nRow.prototype.getCellIndex = function (findCell) {\n\treturn this.cells.findIndex(function (cell) {\n\t\treturn cell === findCell;\n\t});\n};\n\nRow.prototype.findNextEditableCell = function (index) {\n\tvar nextCell = false;\n\n\tif (index < this.cells.length - 1) {\n\t\tfor (var i = index + 1; i < this.cells.length; i++) {\n\t\t\tvar cell = this.cells[i];\n\n\t\t\tif (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {\n\t\t\t\tvar allowEdit = true;\n\n\t\t\t\tif (typeof cell.column.modules.edit.check == \"function\") {\n\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t}\n\n\t\t\t\tif (allowEdit) {\n\t\t\t\t\tnextCell = cell;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nextCell;\n};\n\nRow.prototype.findPrevEditableCell = function (index) {\n\tvar prevCell = false;\n\n\tif (index > 0) {\n\t\tfor (var i = index - 1; i >= 0; i--) {\n\t\t\tvar cell = this.cells[i],\n\t\t\t allowEdit = true;\n\n\t\t\tif (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {\n\t\t\t\tif (typeof cell.column.modules.edit.check == \"function\") {\n\t\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\t}\n\n\t\t\t\tif (allowEdit) {\n\t\t\t\t\tprevCell = cell;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn prevCell;\n};\n\nRow.prototype.getCells = function () {\n\treturn this.cells;\n};\n\nRow.prototype.nextRow = function () {\n\tvar row = this.table.rowManager.nextDisplayRow(this, true);\n\treturn row || false;\n};\n\nRow.prototype.prevRow = function () {\n\tvar row = this.table.rowManager.prevDisplayRow(this, true);\n\treturn row || false;\n};\n\nRow.prototype.moveToRow = function (to, before) {\n\tvar toRow = this.table.rowManager.findRow(to);\n\n\tif (toRow) {\n\t\tthis.table.rowManager.moveRowActual(this, toRow, !before);\n\t\tthis.table.rowManager.refreshActiveData(\"display\", false, true);\n\t} else {\n\t\tconsole.warn(\"Move Error - No matching row found:\", to);\n\t}\n};\n\nRow.prototype.validate = function () {\n\tvar invalid = [];\n\n\tthis.cells.forEach(function (cell) {\n\t\tif (!cell.validate()) {\n\t\t\tinvalid.push(cell.getComponent());\n\t\t}\n\t});\n\n\treturn invalid.length ? invalid : true;\n};\n\n///////////////////// Actions /////////////////////\n\nRow.prototype.delete = function () {\n\tvar _this23 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar index, rows;\n\n\t\tif (_this23.table.options.history && _this23.table.modExists(\"history\")) {\n\n\t\t\tif (_this23.table.options.groupBy && _this23.table.modExists(\"groupRows\")) {\n\t\t\t\trows = _this23.getGroup().rows;\n\t\t\t\tindex = rows.indexOf(_this23);\n\n\t\t\t\tif (index) {\n\t\t\t\t\tindex = rows[index - 1];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tindex = _this23.table.rowManager.getRowIndex(_this23);\n\n\t\t\t\tif (index) {\n\t\t\t\t\tindex = _this23.table.rowManager.rows[index - 1];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_this23.table.modules.history.action(\"rowDelete\", _this23, { data: _this23.getData(), pos: !index, index: index });\n\t\t}\n\n\t\t_this23.deleteActual();\n\n\t\tresolve();\n\t});\n};\n\nRow.prototype.deleteActual = function (blockRedraw) {\n\tvar index = this.table.rowManager.getRowIndex(this);\n\n\tthis.detatchModules();\n\n\t// if(this.table.options.dataTree && this.table.modExists(\"dataTree\")){\n\t// \tthis.table.modules.dataTree.collapseRow(this, true);\n\t// }\n\n\t//remove any reactive data watchers from row object\n\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\", true)) {}\n\t// this.table.modules.reactiveData.unwatchRow(this);\n\n\n\t//remove from group\n\tif (this.modules.group) {\n\t\tthis.modules.group.removeRow(this);\n\t}\n\n\tthis.table.rowManager.deleteRow(this, blockRedraw);\n\n\tthis.deleteCells();\n\n\tthis.initialized = false;\n\tthis.heightInitialized = false;\n\tthis.element = false;\n\n\tif (this.table.options.dataTree && this.table.modExists(\"dataTree\", true)) {\n\t\tthis.table.modules.dataTree.rowDelete(this);\n\t}\n\n\t//recalc column calculations if present\n\tif (this.table.modExists(\"columnCalcs\")) {\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.table.modules.columnCalcs.recalcRowGroup(this);\n\t\t} else {\n\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t}\n\t}\n};\n\nRow.prototype.detatchModules = function () {\n\t//deselect row if it is selected\n\tif (this.table.modExists(\"selectRow\")) {\n\t\tthis.table.modules.selectRow._deselectRow(this, true);\n\t}\n\n\t//cancel edit if row is currently being edited\n\tif (this.table.modExists(\"edit\")) {\n\t\tif (this.table.modules.edit.currentCell.row === this) {\n\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t}\n\t}\n\n\tif (this.table.modExists(\"frozenRows\")) {\n\t\tthis.table.modules.frozenRows.detachRow(this);\n\t}\n};\n\nRow.prototype.deleteCells = function () {\n\tvar cellCount = this.cells.length;\n\n\tfor (var _i8 = 0; _i8 < cellCount; _i8++) {\n\t\tthis.cells[0].delete();\n\t}\n};\n\nRow.prototype.wipe = function () {\n\tthis.detatchModules();\n\tthis.deleteCells();\n\n\tif (this.element) {\n\t\twhile (this.element.firstChild) {\n\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t}if (this.element.parentNode) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t}\n\n\tthis.element = false;\n\tthis.modules = {};\n};\n\nRow.prototype.getGroup = function () {\n\treturn this.modules.group || false;\n};\n\n//////////////// Object Generation /////////////////\nRow.prototype.getComponent = function () {\n\tif (!this.component) {\n\t\tthis.component = new RowComponent(this);\n\t}\n\n\treturn this.component;\n};\n\n//public row object\nvar CellComponent = function CellComponent(cell) {\n\tthis._cell = cell;\n};\n\nCellComponent.prototype.getValue = function () {\n\treturn this._cell.getValue();\n};\n\nCellComponent.prototype.getOldValue = function () {\n\treturn this._cell.getOldValue();\n};\n\nCellComponent.prototype.getInitialValue = function () {\n\treturn this._cell.initialValue;\n};\n\nCellComponent.prototype.getElement = function () {\n\treturn this._cell.getElement();\n};\n\nCellComponent.prototype.getRow = function () {\n\treturn this._cell.row.getComponent();\n};\n\nCellComponent.prototype.getData = function () {\n\treturn this._cell.row.getData();\n};\n\nCellComponent.prototype.getField = function () {\n\treturn this._cell.column.getField();\n};\n\nCellComponent.prototype.getColumn = function () {\n\treturn this._cell.column.getComponent();\n};\n\nCellComponent.prototype.setValue = function (value, mutate) {\n\tif (typeof mutate == \"undefined\") {\n\t\tmutate = true;\n\t}\n\n\tthis._cell.setValue(value, mutate);\n};\n\nCellComponent.prototype.restoreOldValue = function () {\n\tthis._cell.setValueActual(this._cell.getOldValue());\n};\n\nCellComponent.prototype.restoreInitialValue = function () {\n\tthis._cell.setValueActual(this._cell.initialValue);\n};\n\nCellComponent.prototype.edit = function (force) {\n\treturn this._cell.edit(force);\n};\n\nCellComponent.prototype.cancelEdit = function () {\n\tthis._cell.cancelEdit();\n};\n\nCellComponent.prototype.isEdited = function () {\n\treturn !!this._cell.modules.edit && this._cell.modules.edit.edited;\n};\n\nCellComponent.prototype.clearEdited = function () {\n\tif (self.table.modExists(\"edit\", true)) {\n\t\tthis._cell.table.modules.edit.clearEdited(this._cell);\n\t}\n};\n\nCellComponent.prototype.isValid = function () {\n\treturn this._cell.modules.validate ? !this._cell.modules.validate.invalid : true;\n};\n\nCellComponent.prototype.validate = function () {\n\treturn this._cell.validate();\n};\n\nCellComponent.prototype.clearValidation = function () {\n\tif (this._cell.table.modExists(\"validate\", true)) {\n\t\tthis._cell.table.modules.validate.clearValidation(this._cell);\n\t}\n};\n\nCellComponent.prototype.nav = function () {\n\treturn this._cell.nav();\n};\n\nCellComponent.prototype.checkHeight = function () {\n\tthis._cell.checkHeight();\n};\n\nCellComponent.prototype.getTable = function () {\n\treturn this._cell.table;\n};\n\nCellComponent.prototype._getSelf = function () {\n\treturn this._cell;\n};\n\nvar Cell = function Cell(column, row) {\n\n\tthis.table = column.table;\n\tthis.column = column;\n\tthis.row = row;\n\tthis.element = null;\n\tthis.value = null;\n\tthis.initialValue;\n\tthis.oldValue = null;\n\tthis.modules = {};\n\n\tthis.height = null;\n\tthis.width = null;\n\tthis.minWidth = null;\n\n\tthis.component = null;\n\n\tthis.loaded = false; //track if the cell has been added to the DOM yet\n\n\tthis.build();\n};\n\n//////////////// Setup Functions /////////////////\n\n//generate element\nCell.prototype.build = function () {\n\tthis.generateElement();\n\n\tthis.setWidth();\n\n\tthis._configureCell();\n\n\tthis.setValueActual(this.column.getFieldValue(this.row.data));\n\n\tthis.initialValue = this.value;\n};\n\nCell.prototype.generateElement = function () {\n\tthis.element = document.createElement('div');\n\tthis.element.className = \"tabulator-cell\";\n\tthis.element.setAttribute(\"role\", \"gridcell\");\n\tthis.element = this.element;\n};\n\nCell.prototype._configureCell = function () {\n\tvar self = this,\n\t cellEvents = self.column.cellEvents,\n\t element = self.element,\n\t field = this.column.getField(),\n\t vertAligns = {\n\t\ttop: \"flex-start\",\n\t\tbottom: \"flex-end\",\n\t\tmiddle: \"center\"\n\t},\n\t hozAligns = {\n\t\tleft: \"flex-start\",\n\t\tright: \"flex-end\",\n\t\tcenter: \"center\"\n\t};\n\n\t//set text alignment\n\telement.style.textAlign = self.column.hozAlign;\n\n\tif (self.column.vertAlign) {\n\t\telement.style.display = \"inline-flex\";\n\n\t\telement.style.alignItems = vertAligns[self.column.vertAlign] || \"\";\n\n\t\tif (self.column.hozAlign) {\n\t\t\telement.style.justifyContent = hozAligns[self.column.hozAlign] || \"\";\n\t\t}\n\t}\n\n\tif (field) {\n\t\telement.setAttribute(\"tabulator-field\", field);\n\t}\n\n\t//add class to cell if needed\n\tif (self.column.definition.cssClass) {\n\t\tvar classNames = self.column.definition.cssClass.split(\" \");\n\t\tclassNames.forEach(function (className) {\n\t\t\telement.classList.add(className);\n\t\t});\n\t}\n\n\t//update tooltip on mouse enter\n\tif (this.table.options.tooltipGenerationMode === \"hover\") {\n\t\telement.addEventListener(\"mouseenter\", function (e) {\n\t\t\tself._generateTooltip();\n\t\t});\n\t}\n\n\tself._bindClickEvents(cellEvents);\n\n\tself._bindTouchEvents(cellEvents);\n\n\tself._bindMouseEvents(cellEvents);\n\n\tif (self.column.modules.edit) {\n\t\tself.table.modules.edit.bindEditor(self);\n\t}\n\n\tif (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists(\"moveRow\")) {\n\t\tself.table.modules.moveRow.initializeCell(self);\n\t}\n\n\t//hide cell if not visible\n\tif (!self.column.visible) {\n\t\tself.hide();\n\t}\n};\n\nCell.prototype._bindClickEvents = function (cellEvents) {\n\tvar self = this,\n\t element = self.element;\n\n\t//set event bindings\n\tif (cellEvents.cellClick || self.table.options.cellClick) {\n\t\telement.addEventListener(\"click\", function (e) {\n\t\t\tvar component = self.getComponent();\n\n\t\t\tif (cellEvents.cellClick) {\n\t\t\t\tcellEvents.cellClick.call(self.table, e, component);\n\t\t\t}\n\n\t\t\tif (self.table.options.cellClick) {\n\t\t\t\tself.table.options.cellClick.call(self.table, e, component);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (cellEvents.cellDblClick || this.table.options.cellDblClick) {\n\t\telement.addEventListener(\"dblclick\", function (e) {\n\t\t\tvar component = self.getComponent();\n\n\t\t\tif (cellEvents.cellDblClick) {\n\t\t\t\tcellEvents.cellDblClick.call(self.table, e, component);\n\t\t\t}\n\n\t\t\tif (self.table.options.cellDblClick) {\n\t\t\t\tself.table.options.cellDblClick.call(self.table, e, component);\n\t\t\t}\n\t\t});\n\t} else {\n\t\telement.addEventListener(\"dblclick\", function (e) {\n\n\t\t\tif (self.table.modExists(\"edit\")) {\n\t\t\t\tif (self.table.modules.edit.currentCell === self) {\n\t\t\t\t\treturn; //prevent instant selection of editor content\n\t\t\t\t}\n\t\t\t}\n\n\t\t\te.preventDefault();\n\n\t\t\ttry {\n\t\t\t\tif (document.selection) {\n\t\t\t\t\t// IE\n\t\t\t\t\tvar range = document.body.createTextRange();\n\t\t\t\t\trange.moveToElementText(self.element);\n\t\t\t\t\trange.select();\n\t\t\t\t} else if (window.getSelection) {\n\t\t\t\t\tvar range = document.createRange();\n\t\t\t\t\trange.selectNode(self.element);\n\t\t\t\t\twindow.getSelection().removeAllRanges();\n\t\t\t\t\twindow.getSelection().addRange(range);\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t});\n\t}\n\n\tif (cellEvents.cellContext || this.table.options.cellContext) {\n\t\telement.addEventListener(\"contextmenu\", function (e) {\n\t\t\tvar component = self.getComponent();\n\n\t\t\tif (cellEvents.cellContext) {\n\t\t\t\tcellEvents.cellContext.call(self.table, e, component);\n\t\t\t}\n\n\t\t\tif (self.table.options.cellContext) {\n\t\t\t\tself.table.options.cellContext.call(self.table, e, component);\n\t\t\t}\n\t\t});\n\t}\n};\n\nCell.prototype._bindMouseEvents = function (cellEvents) {\n\tvar self = this,\n\t element = self.element;\n\n\tif (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {\n\t\telement.addEventListener(\"mouseenter\", function (e) {\n\t\t\tvar component = self.getComponent();\n\n\t\t\tif (cellEvents.cellMouseEnter) {\n\t\t\t\tcellEvents.cellMouseEnter.call(self.table, e, component);\n\t\t\t}\n\n\t\t\tif (self.table.options.cellMouseEnter) {\n\t\t\t\tself.table.options.cellMouseEnter.call(self.table, e, component);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {\n\t\telement.addEventListener(\"mouseleave\", function (e) {\n\t\t\tvar component = self.getComponent();\n\n\t\t\tif (cellEvents.cellMouseLeave) {\n\t\t\t\tcellEvents.cellMouseLeave.call(self.table, e, component);\n\t\t\t}\n\n\t\t\tif (self.table.options.cellMouseLeave) {\n\t\t\t\tself.table.options.cellMouseLeave.call(self.table, e, component);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {\n\t\telement.addEventListener(\"mouseover\", function (e) {\n\t\t\tvar component = self.getComponent();\n\n\t\t\tif (cellEvents.cellMouseOver) {\n\t\t\t\tcellEvents.cellMouseOver.call(self.table, e, component);\n\t\t\t}\n\n\t\t\tif (self.table.options.cellMouseOver) {\n\t\t\t\tself.table.options.cellMouseOver.call(self.table, e, component);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {\n\t\telement.addEventListener(\"mouseout\", function (e) {\n\t\t\tvar component = self.getComponent();\n\n\t\t\tif (cellEvents.cellMouseOut) {\n\t\t\t\tcellEvents.cellMouseOut.call(self.table, e, component);\n\t\t\t}\n\n\t\t\tif (self.table.options.cellMouseOut) {\n\t\t\t\tself.table.options.cellMouseOut.call(self.table, e, component);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {\n\t\telement.addEventListener(\"mousemove\", function (e) {\n\t\t\tvar component = self.getComponent();\n\n\t\t\tif (cellEvents.cellMouseMove) {\n\t\t\t\tcellEvents.cellMouseMove.call(self.table, e, component);\n\t\t\t}\n\n\t\t\tif (self.table.options.cellMouseMove) {\n\t\t\t\tself.table.options.cellMouseMove.call(self.table, e, component);\n\t\t\t}\n\t\t});\n\t}\n};\n\nCell.prototype._bindTouchEvents = function (cellEvents) {\n\tvar self = this,\n\t element = self.element,\n\t dblTap,\n\t tapHold,\n\t tap;\n\n\tif (cellEvents.cellTap || this.table.options.cellTap) {\n\t\ttap = false;\n\n\t\telement.addEventListener(\"touchstart\", function (e) {\n\t\t\ttap = true;\n\t\t}, { passive: true });\n\n\t\telement.addEventListener(\"touchend\", function (e) {\n\t\t\tif (tap) {\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellTap) {\n\t\t\t\t\tcellEvents.cellTap.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellTap) {\n\t\t\t\t\tself.table.options.cellTap.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttap = false;\n\t\t});\n\t}\n\n\tif (cellEvents.cellDblTap || this.table.options.cellDblTap) {\n\t\tdblTap = null;\n\n\t\telement.addEventListener(\"touchend\", function (e) {\n\n\t\t\tif (dblTap) {\n\t\t\t\tclearTimeout(dblTap);\n\t\t\t\tdblTap = null;\n\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellDblTap) {\n\t\t\t\t\tcellEvents.cellDblTap.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellDblTap) {\n\t\t\t\t\tself.table.options.cellDblTap.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tdblTap = setTimeout(function () {\n\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\tdblTap = null;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (cellEvents.cellTapHold || this.table.options.cellTapHold) {\n\t\ttapHold = null;\n\n\t\telement.addEventListener(\"touchstart\", function (e) {\n\t\t\tclearTimeout(tapHold);\n\n\t\t\ttapHold = setTimeout(function () {\n\t\t\t\tclearTimeout(tapHold);\n\t\t\t\ttapHold = null;\n\t\t\t\ttap = false;\n\t\t\t\tvar component = self.getComponent();\n\n\t\t\t\tif (cellEvents.cellTapHold) {\n\t\t\t\t\tcellEvents.cellTapHold.call(self.table, e, component);\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.cellTapHold) {\n\t\t\t\t\tself.table.options.cellTapHold.call(self.table, e, component);\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}, { passive: true });\n\n\t\telement.addEventListener(\"touchend\", function (e) {\n\t\t\tclearTimeout(tapHold);\n\t\t\ttapHold = null;\n\t\t});\n\t}\n};\n\n//generate cell contents\nCell.prototype._generateContents = function () {\n\tvar val;\n\n\tif (this.table.modExists(\"format\")) {\n\t\tval = this.table.modules.format.formatValue(this);\n\t} else {\n\t\tval = this.element.innerHTML = this.value;\n\t}\n\n\tswitch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {\n\t\tcase \"object\":\n\t\t\tif (val instanceof Node) {\n\n\t\t\t\t//clear previous cell contents\n\t\t\t\twhile (this.element.firstChild) {\n\t\t\t\t\tthis.element.removeChild(this.element.firstChild);\n\t\t\t\t}this.element.appendChild(val);\n\t\t\t} else {\n\t\t\t\tthis.element.innerHTML = \"\";\n\n\t\t\t\tif (val != null) {\n\t\t\t\t\tconsole.warn(\"Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:\", val);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase \"undefined\":\n\t\tcase \"null\":\n\t\t\tthis.element.innerHTML = \"\";\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthis.element.innerHTML = val;\n\t}\n};\n\nCell.prototype.cellRendered = function () {\n\tif (this.table.modExists(\"format\") && this.table.modules.format.cellRendered) {\n\t\tthis.table.modules.format.cellRendered(this);\n\t}\n};\n\n//generate tooltip text\nCell.prototype._generateTooltip = function () {\n\tvar tooltip = this.column.tooltip;\n\n\tif (tooltip) {\n\t\tif (tooltip === true) {\n\t\t\ttooltip = this.value;\n\t\t} else if (typeof tooltip == \"function\") {\n\t\t\ttooltip = tooltip(this.getComponent());\n\n\t\t\tif (tooltip === false) {\n\t\t\t\ttooltip = \"\";\n\t\t\t}\n\t\t}\n\n\t\tif (typeof tooltip === \"undefined\") {\n\t\t\ttooltip = \"\";\n\t\t}\n\n\t\tthis.element.setAttribute(\"title\", tooltip);\n\t} else {\n\t\tthis.element.setAttribute(\"title\", \"\");\n\t}\n};\n\n//////////////////// Getters ////////////////////\nCell.prototype.getElement = function (containerOnly) {\n\tif (!this.loaded) {\n\t\tthis.loaded = true;\n\t\tif (!containerOnly) {\n\t\t\tthis.layoutElement();\n\t\t}\n\t}\n\n\treturn this.element;\n};\n\nCell.prototype.getValue = function () {\n\treturn this.value;\n};\n\nCell.prototype.getOldValue = function () {\n\treturn this.oldValue;\n};\n\n//////////////////// Actions ////////////////////\n\nCell.prototype.setValue = function (value, mutate) {\n\n\tvar changed = this.setValueProcessData(value, mutate),\n\t component;\n\n\tif (changed) {\n\t\tif (this.table.options.history && this.table.modExists(\"history\")) {\n\t\t\tthis.table.modules.history.action(\"cellEdit\", this, { oldValue: this.oldValue, newValue: this.value });\n\t\t}\n\n\t\tcomponent = this.getComponent();\n\n\t\tif (this.column.cellEvents.cellEdited) {\n\t\t\tthis.column.cellEvents.cellEdited.call(this.table, component);\n\t\t}\n\n\t\tif (this.table.options.groupUpdateOnCellEdit && this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.table.modules.groupRows.reassignRowToGroup(this.row);\n\t\t}\n\n\t\tthis.cellRendered();\n\n\t\tthis.table.options.cellEdited.call(this.table, component);\n\n\t\tif (this.table.options.dataChanged) {\n\t\t\tthis.table.options.dataChanged.call(this.table, this.table.rowManager.getData());\n\t\t}\n\t}\n};\n\nCell.prototype.setValueProcessData = function (value, mutate) {\n\tvar changed = false;\n\n\tif (this.value != value) {\n\n\t\tchanged = true;\n\n\t\tif (mutate) {\n\t\t\tif (this.column.modules.mutate) {\n\t\t\t\tvalue = this.table.modules.mutator.transformCell(this, value);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.setValueActual(value);\n\n\tif (changed && this.table.modExists(\"columnCalcs\")) {\n\t\tif (this.column.definition.topCalc || this.column.definition.bottomCalc) {\n\t\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\n\t\t\t\tif (this.table.options.columnCalcs == \"table\" || this.table.options.columnCalcs == \"both\") {\n\t\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t\t}\n\n\t\t\t\tif (this.table.options.columnCalcs != \"table\") {\n\t\t\t\t\tthis.table.modules.columnCalcs.recalcRowGroup(this.row);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn changed;\n};\n\nCell.prototype.setValueActual = function (value) {\n\tthis.oldValue = this.value;\n\n\tthis.value = value;\n\n\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\")) {\n\t\tthis.table.modules.reactiveData.block();\n\t}\n\n\tthis.column.setFieldValue(this.row.data, value);\n\n\tif (this.table.options.reactiveData && this.table.modExists(\"reactiveData\")) {\n\t\tthis.table.modules.reactiveData.unblock();\n\t}\n\n\tif (this.loaded) {\n\t\tthis.layoutElement();\n\t}\n};\n\nCell.prototype.layoutElement = function () {\n\tthis._generateContents();\n\tthis._generateTooltip();\n\n\t//set resizable handles\n\tif (this.table.options.resizableColumns && this.table.modExists(\"resizeColumns\") && this.row.type === \"row\") {\n\t\tthis.table.modules.resizeColumns.initializeColumn(\"cell\", this.column, this.element);\n\t}\n\n\tif ((this.column.definition.contextMenu || this.column.definition.clickMenu) && this.table.modExists(\"menu\")) {\n\t\tthis.table.modules.menu.initializeCell(this);\n\t}\n\n\t//handle frozen cells\n\tif (this.table.modExists(\"frozenColumns\")) {\n\t\tthis.table.modules.frozenColumns.layoutElement(this.element, this.column);\n\t}\n};\n\nCell.prototype.setWidth = function () {\n\tthis.width = this.column.width;\n\tthis.element.style.width = this.column.widthStyled;\n};\n\nCell.prototype.clearWidth = function () {\n\tthis.width = \"\";\n\tthis.element.style.width = \"\";\n};\n\nCell.prototype.getWidth = function () {\n\treturn this.width || this.element.offsetWidth;\n};\n\nCell.prototype.setMinWidth = function () {\n\tthis.minWidth = this.column.minWidth;\n\tthis.element.style.minWidth = this.column.minWidthStyled;\n};\n\nCell.prototype.setMaxWidth = function () {\n\tthis.maxWidth = this.column.maxWidth;\n\tthis.element.style.maxWidth = this.column.maxWidthStyled;\n};\n\nCell.prototype.checkHeight = function () {\n\t// var height = this.element.css(\"height\");\n\tthis.row.reinitializeHeight();\n};\n\nCell.prototype.clearHeight = function () {\n\tthis.element.style.height = \"\";\n\tthis.height = null;\n};\n\nCell.prototype.setHeight = function () {\n\tthis.height = this.row.height;\n\tthis.element.style.height = this.row.heightStyled;\n};\n\nCell.prototype.getHeight = function () {\n\treturn this.height || this.element.offsetHeight;\n};\n\nCell.prototype.show = function () {\n\tthis.element.style.display = this.column.vertAlign ? \"inline-flex\" : \"\";\n};\n\nCell.prototype.hide = function () {\n\tthis.element.style.display = \"none\";\n};\n\nCell.prototype.edit = function (force) {\n\tif (this.table.modExists(\"edit\", true)) {\n\t\treturn this.table.modules.edit.editCell(this, force);\n\t}\n};\n\nCell.prototype.cancelEdit = function () {\n\tif (this.table.modExists(\"edit\", true)) {\n\t\tvar editing = this.table.modules.edit.getCurrentCell();\n\n\t\tif (editing && editing._getSelf() === this) {\n\t\t\tthis.table.modules.edit.cancelEdit();\n\t\t} else {\n\t\t\tconsole.warn(\"Cancel Editor Error - This cell is not currently being edited \");\n\t\t}\n\t}\n};\n\nCell.prototype.validate = function () {\n\tif (this.column.modules.validate && this.table.modExists(\"validate\", true)) {\n\t\tvar valid = this.table.modules.validate.validate(this.column.modules.validate, this, this.getValue());\n\n\t\treturn valid === true;\n\t} else {\n\t\treturn true;\n\t}\n};\n\nCell.prototype.delete = function () {\n\tif (!this.table.rowManager.redrawBlock && this.element.parentNode) {\n\t\tthis.element.parentNode.removeChild(this.element);\n\t}\n\n\tif (this.modules.validate && this.modules.validate.invalid) {\n\t\tthis.table.modules.validate.clearValidation(this);\n\t}\n\n\tif (this.modules.edit && this.modules.edit.edited) {\n\t\tthis.table.modules.edit.clearEdited(this);\n\t}\n\n\tif (this.table.options.history) {\n\t\tthis.table.modules.history.clearComponentHistory(this);\n\t}\n\n\tthis.element = false;\n\tthis.column.deleteCell(this);\n\tthis.row.deleteCell(this);\n\tthis.calcs = {};\n};\n\n//////////////// Navigation /////////////////\n\nCell.prototype.nav = function () {\n\n\tvar self = this,\n\t nextCell = false,\n\t index = this.row.getCellIndex(this);\n\n\treturn {\n\t\tnext: function next() {\n\t\t\tvar nextCell = this.right(),\n\t\t\t nextRow;\n\n\t\t\tif (!nextCell) {\n\t\t\t\tnextRow = self.table.rowManager.nextDisplayRow(self.row, true);\n\n\t\t\t\tif (nextRow) {\n\t\t\t\t\tnextCell = nextRow.findNextEditableCell(-1);\n\n\t\t\t\t\tif (nextCell) {\n\t\t\t\t\t\tnextCell.edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tprev: function prev() {\n\t\t\tvar nextCell = this.left(),\n\t\t\t prevRow;\n\n\t\t\tif (!nextCell) {\n\t\t\t\tprevRow = self.table.rowManager.prevDisplayRow(self.row, true);\n\n\t\t\t\tif (prevRow) {\n\t\t\t\t\tnextCell = prevRow.findPrevEditableCell(prevRow.cells.length);\n\n\t\t\t\t\tif (nextCell) {\n\t\t\t\t\t\tnextCell.edit();\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tleft: function left() {\n\n\t\t\tnextCell = self.row.findPrevEditableCell(index);\n\n\t\t\tif (nextCell) {\n\t\t\t\tnextCell.edit();\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tright: function right() {\n\t\t\tnextCell = self.row.findNextEditableCell(index);\n\n\t\t\tif (nextCell) {\n\t\t\t\tnextCell.edit();\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tup: function up() {\n\t\t\tvar nextRow = self.table.rowManager.prevDisplayRow(self.row, true);\n\n\t\t\tif (nextRow) {\n\t\t\t\tnextRow.cells[index].edit();\n\t\t\t}\n\t\t},\n\t\tdown: function down() {\n\t\t\tvar nextRow = self.table.rowManager.nextDisplayRow(self.row, true);\n\n\t\t\tif (nextRow) {\n\t\t\t\tnextRow.cells[index].edit();\n\t\t\t}\n\t\t}\n\n\t};\n};\n\nCell.prototype.getIndex = function () {\n\tthis.row.getCellIndex(this);\n};\n\n//////////////// Object Generation /////////////////\nCell.prototype.getComponent = function () {\n\n\tif (!this.component) {\n\t\tthis.component = new CellComponent(this);\n\t}\n\n\treturn this.component;\n};\nvar FooterManager = function FooterManager(table) {\n\tthis.table = table;\n\tthis.active = false;\n\tthis.element = this.createElement(); //containing element\n\tthis.external = false;\n\tthis.links = [];\n\n\tthis._initialize();\n};\n\nFooterManager.prototype.createElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-footer\");\n\n\treturn el;\n};\n\nFooterManager.prototype._initialize = function (element) {\n\tif (this.table.options.footerElement) {\n\n\t\tswitch (_typeof(this.table.options.footerElement)) {\n\t\t\tcase \"string\":\n\n\t\t\t\tif (this.table.options.footerElement[0] === \"<\") {\n\t\t\t\t\tthis.element.innerHTML = this.table.options.footerElement;\n\t\t\t\t} else {\n\t\t\t\t\tthis.external = true;\n\t\t\t\t\tthis.element = document.querySelector(this.table.options.footerElement);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.element = this.table.options.footerElement;\n\t\t\t\tbreak;\n\t\t}\n\t}\n};\n\nFooterManager.prototype.getElement = function () {\n\treturn this.element;\n};\n\nFooterManager.prototype.append = function (element, parent) {\n\tthis.activate(parent);\n\n\tthis.element.appendChild(element);\n\tthis.table.rowManager.adjustTableSize();\n};\n\nFooterManager.prototype.prepend = function (element, parent) {\n\tthis.activate(parent);\n\n\tthis.element.insertBefore(element, this.element.firstChild);\n\tthis.table.rowManager.adjustTableSize();\n};\n\nFooterManager.prototype.remove = function (element) {\n\telement.parentNode.removeChild(element);\n\tthis.deactivate();\n};\n\nFooterManager.prototype.deactivate = function (force) {\n\tif (!this.element.firstChild || force) {\n\t\tif (!this.external) {\n\t\t\tthis.element.parentNode.removeChild(this.element);\n\t\t}\n\t\tthis.active = false;\n\t}\n\n\t// this.table.rowManager.adjustTableSize();\n};\n\nFooterManager.prototype.activate = function (parent) {\n\tif (!this.active) {\n\t\tthis.active = true;\n\t\tif (!this.external) {\n\t\t\tthis.table.element.appendChild(this.getElement());\n\t\t\tthis.table.element.style.display = '';\n\t\t}\n\t}\n\n\tif (parent) {\n\t\tthis.links.push(parent);\n\t}\n};\n\nFooterManager.prototype.redraw = function () {\n\tthis.links.forEach(function (link) {\n\t\tlink.footerRedraw();\n\t});\n};\n\nvar Tabulator = function Tabulator(element, options) {\n\n\tthis.options = {};\n\n\tthis.columnManager = null; // hold Column Manager\n\tthis.rowManager = null; //hold Row Manager\n\tthis.footerManager = null; //holder Footer Manager\n\tthis.vdomHoz = null; //holder horizontal virtual dom\n\n\n\tthis.browser = \"\"; //hold current browser type\n\tthis.browserSlow = false; //handle reduced functionality for slower browsers\n\tthis.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence\n\tthis.rtl = false; //check if the table is in RTL mode\n\n\tthis.modules = {}; //hold all modules bound to this table\n\n\tif (this.initializeElement(element)) {\n\t\tthis.initializeOptions(options || {});\n\t\tthis._create();\n\t}\n\n\tTabulator.prototype.comms.register(this); //register table for inderdevice communication\n};\n\n//default setup options\nTabulator.prototype.defaultOptions = {\n\n\theight: false, //height of tabulator\n\tminHeight: false, //minimum height of tabulator\n\tmaxHeight: false, //maximum height of tabulator\n\n\tlayout: \"fitData\", ///layout type \"fitColumns\" | \"fitData\"\n\tlayoutColumnsOnNewData: false, //update column widths on setData\n\n\tcolumnMinWidth: 40, //minimum global width for a column\n\tcolumnMaxWidth: false, //minimum global width for a column\n\tcolumnHeaderVertAlign: \"top\", //vertical alignment of column headers\n\tcolumnVertAlign: false, // DEPRECATED - Left to allow warning\n\n\tresizableColumns: true, //resizable columns\n\tresizableRows: false, //resizable rows\n\tautoResize: true, //auto resize table\n\n\tcolumns: [], //store for colum header info\n\n\tcellHozAlign: \"\", //horizontal align columns\n\tcellVertAlign: \"\", //vertical align columns\n\theaderHozAlign: \"\", //horizontal header alignment\n\n\n\tdata: [], //default starting data\n\n\tautoColumns: false, //build columns from data row structure\n\tautoColumnsDefinitions: false,\n\n\treactiveData: false, //enable data reactivity\n\n\tnestedFieldSeparator: \".\", //seperatpr for nested data\n\n\ttooltips: false, //Tool tip value\n\ttooltipsHeader: false, //Tool tip for headers\n\ttooltipGenerationMode: \"load\", //when to generate tooltips\n\n\tinitialSort: false, //initial sorting criteria\n\tinitialFilter: false, //initial filtering criteria\n\tinitialHeaderFilter: false, //initial header filtering criteria\n\n\tcolumnHeaderSortMulti: true, //multiple or single column sorting\n\n\tsortOrderReverse: false, //reverse internal sort ordering\n\n\theaderSort: true, //set default global header sort\n\theaderSortTristate: false, //set default tristate header sorting\n\theaderSortElement: \"<div class='tabulator-arrow'></div>\", //header sort element\n\n\tfooterElement: false, //hold footer element\n\n\tindex: \"id\", //filed for row index\n\n\ttextDirection: \"auto\",\n\n\tkeybindings: [], //array for keybindings\n\n\ttabEndNewRow: false, //create new row when tab to end of table\n\n\tinvalidOptionWarnings: true, //allow toggling of invalid option warnings\n\n\tclipboard: false, //enable clipboard\n\tclipboardCopyStyled: true, //formatted table data\n\tclipboardCopyConfig: false, //clipboard config\n\tclipboardCopyFormatter: false, //DEPRICATED - REMOVE in 5.0\n\tclipboardCopyRowRange: \"active\", //restrict clipboard to visible rows only\n\tclipboardPasteParser: \"table\", //convert pasted clipboard data to rows\n\tclipboardPasteAction: \"insert\", //how to insert pasted data into the table\n\n\tclipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard\n\tclipboardPasted: function clipboardPasted() {}, //data has been pasted into the table\n\tclipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table\n\n\tdownloadDataFormatter: false, //function to manipulate table data before it is downloaded\n\tdownloadReady: function downloadReady(data, blob) {\n\t\treturn blob;\n\t}, //function to manipulate download data\n\tdownloadComplete: false, //function to manipulate download data\n\tdownloadConfig: {}, //download config\n\tdownloadRowRange: \"active\", //restrict download to active rows only\n\n\tdataTree: false, //enable data tree\n\tdataTreeFilter: true, //filter child rows\n\tdataTreeSort: true, //sort child rows\n\tdataTreeElementColumn: false,\n\tdataTreeBranchElement: true, //show data tree branch element\n\tdataTreeChildIndent: 9, //data tree child indent in px\n\tdataTreeChildField: \"_children\", //data tre column field to look for child rows\n\tdataTreeCollapseElement: false, //data tree row collapse element\n\tdataTreeExpandElement: false, //data tree row expand element\n\tdataTreeStartExpanded: false,\n\tdataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded\n\tdataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed\n\tdataTreeChildColumnCalcs: false, //include visible data tree rows in column calculations\n\tdataTreeSelectPropagate: false, //seleccting a parent row selects its children\n\n\tprintAsHtml: false, //enable print as html\n\tprintFormatter: false, //printing page formatter\n\tprintHeader: false, //page header contents\n\tprintFooter: false, //page footer contents\n\tprintCopyStyle: true, //DEPRICATED - REMOVE in 5.0\n\tprintStyled: true, //enable print as html styling\n\tprintVisibleRows: true, //DEPRICATED - REMOVE in 5.0\n\tprintRowRange: \"visible\", //restrict print to visible rows only\n\tprintConfig: {}, //print config options\n\n\taddRowPos: \"bottom\", //position to insert blank rows, top|bottom\n\n\tselectable: \"highlight\", //highlight rows on hover\n\tselectableRangeMode: \"drag\", //highlight rows on hover\n\tselectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached\n\tselectablePersistence: true, // maintain selection when table view is updated\n\tselectableCheck: function selectableCheck(data, row) {\n\t\treturn true;\n\t}, //check wheather row is selectable\n\n\theaderFilterLiveFilterDelay: 300, //delay before updating column after user types in header filter\n\theaderFilterPlaceholder: false, //placeholder text to display in header filters\n\n\theaderVisible: true, //hide header\n\n\thistory: false, //enable edit history\n\n\tlocale: false, //current system language\n\tlangs: {},\n\n\tvirtualDom: true, //enable DOM virtualization\n\tvirtualDomBuffer: 0, // set virtual DOM buffer size\n\tvirtualDomHoz: false, //enable horizontal DOM virtualization\n\n\tpersistentLayout: false, //DEPRICATED - REMOVE in 5.0\n\tpersistentSort: false, //DEPRICATED - REMOVE in 5.0\n\tpersistentFilter: false, //DEPRICATED - REMOVE in 5.0\n\tpersistenceID: \"\", //key for persistent storage\n\tpersistenceMode: true, //mode for storing persistence information\n\tpersistenceReaderFunc: false, //function for handling persistence data reading\n\tpersistenceWriterFunc: false, //function for handling persistence data writing\n\n\tpersistence: false,\n\n\tresponsiveLayout: false, //responsive layout flags\n\tresponsiveLayoutCollapseStartOpen: true, //start showing collapsed data\n\tresponsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter\n\tresponsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter\n\n\tpagination: false, //set pagination type\n\tpaginationSize: false, //set number of rows to a page\n\tpaginationInitialPage: 1, //initail page to show on load\n\tpaginationButtonCount: 5, // set count of page button\n\tpaginationSizeSelector: false, //add pagination size selector element\n\tpaginationElement: false, //element to hold pagination numbers\n\tpaginationDataSent: {}, //pagination data sent to the server\n\tpaginationDataReceived: {}, //pagination data received from the server\n\tpaginationAddRow: \"page\", //add rows on table or page\n\n\tajaxURL: false, //url for ajax loading\n\tajaxURLGenerator: false,\n\tajaxParams: {}, //params for ajax loading\n\tajaxConfig: \"get\", //ajax request type\n\tajaxContentType: \"form\", //ajax request type\n\tajaxRequestFunc: false, //promise function\n\tajaxLoader: true, //show loader\n\tajaxLoaderLoading: false, //loader element\n\tajaxLoaderError: false, //loader element\n\tajaxFiltering: false,\n\tajaxSorting: false,\n\tajaxProgressiveLoad: false, //progressive loading\n\tajaxProgressiveLoadDelay: 0, //delay between requests\n\tajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins\n\n\tgroupBy: false, //enable table grouping and set field to group by\n\tgroupStartOpen: true, //starting state of group\n\tgroupValues: false,\n\tgroupUpdateOnCellEdit: false,\n\n\tgroupHeader: false, //header generation function\n\tgroupHeaderPrint: null,\n\tgroupHeaderClipboard: null,\n\tgroupHeaderHtmlOutput: null,\n\tgroupHeaderDownload: null,\n\n\thtmlOutputConfig: false, //html outypu config\n\n\tmovableColumns: false, //enable movable columns\n\n\tmovableRows: false, //enable movable rows\n\tmovableRowsConnectedTables: false, //tables for movable rows to be connected to\n\tmovableRowsConnectedElements: false, //other elements for movable rows to be connected to\n\tmovableRowsSender: false,\n\tmovableRowsReceiver: \"insert\",\n\tmovableRowsSendingStart: function movableRowsSendingStart() {},\n\tmovableRowsSent: function movableRowsSent() {},\n\tmovableRowsSentFailed: function movableRowsSentFailed() {},\n\tmovableRowsSendingStop: function movableRowsSendingStop() {},\n\tmovableRowsReceivingStart: function movableRowsReceivingStart() {},\n\tmovableRowsReceived: function movableRowsReceived() {},\n\tmovableRowsReceivedFailed: function movableRowsReceivedFailed() {},\n\tmovableRowsReceivingStop: function movableRowsReceivingStop() {},\n\tmovableRowsElementDrop: function movableRowsElementDrop() {},\n\n\tscrollToRowPosition: \"top\",\n\tscrollToRowIfVisible: true,\n\n\tscrollToColumnPosition: \"left\",\n\tscrollToColumnIfVisible: true,\n\n\trowFormatter: false,\n\trowFormatterPrint: null,\n\trowFormatterClipboard: null,\n\trowFormatterHtmlOutput: null,\n\n\tplaceholder: false,\n\n\t//table building callbacks\n\ttableBuilding: function tableBuilding() {},\n\ttableBuilt: function tableBuilt() {},\n\n\t//render callbacks\n\trenderStarted: function renderStarted() {},\n\trenderComplete: function renderComplete() {},\n\n\t//row callbacks\n\trowClick: false,\n\trowDblClick: false,\n\trowContext: false,\n\trowTap: false,\n\trowDblTap: false,\n\trowTapHold: false,\n\trowMouseEnter: false,\n\trowMouseLeave: false,\n\trowMouseOver: false,\n\trowMouseOut: false,\n\trowMouseMove: false,\n\trowContextMenu: false,\n\trowClickMenu: false,\n\trowAdded: function rowAdded() {},\n\trowDeleted: function rowDeleted() {},\n\trowMoved: function rowMoved() {},\n\trowUpdated: function rowUpdated() {},\n\trowSelectionChanged: function rowSelectionChanged() {},\n\trowSelected: function rowSelected() {},\n\trowDeselected: function rowDeselected() {},\n\trowResized: function rowResized() {},\n\n\t//cell callbacks\n\t//row callbacks\n\tcellClick: false,\n\tcellDblClick: false,\n\tcellContext: false,\n\tcellTap: false,\n\tcellDblTap: false,\n\tcellTapHold: false,\n\tcellMouseEnter: false,\n\tcellMouseLeave: false,\n\tcellMouseOver: false,\n\tcellMouseOut: false,\n\tcellMouseMove: false,\n\tcellEditing: function cellEditing() {},\n\tcellEdited: function cellEdited() {},\n\tcellEditCancelled: function cellEditCancelled() {},\n\n\t//column callbacks\n\tcolumnMoved: false,\n\tcolumnResized: function columnResized() {},\n\tcolumnTitleChanged: function columnTitleChanged() {},\n\tcolumnVisibilityChanged: function columnVisibilityChanged() {},\n\n\t//HTML iport callbacks\n\thtmlImporting: function htmlImporting() {},\n\thtmlImported: function htmlImported() {},\n\n\t//data callbacks\n\tdataLoading: function dataLoading() {},\n\tdataLoaded: function dataLoaded() {},\n\tdataEdited: false, //DEPRECATED\n\tdataChanged: false,\n\n\t//ajax callbacks\n\tajaxRequesting: function ajaxRequesting() {},\n\tajaxResponse: false,\n\tajaxError: function ajaxError() {},\n\n\t//filtering callbacks\n\tdataFiltering: false,\n\tdataFiltered: false,\n\n\t//sorting callbacks\n\tdataSorting: function dataSorting() {},\n\tdataSorted: function dataSorted() {},\n\n\t//grouping callbacks\n\tgroupToggleElement: \"arrow\",\n\tgroupClosedShowCalcs: false,\n\tdataGrouping: function dataGrouping() {},\n\tdataGrouped: false,\n\tgroupVisibilityChanged: function groupVisibilityChanged() {},\n\tgroupClick: false,\n\tgroupDblClick: false,\n\tgroupContext: false,\n\tgroupContextMenu: false,\n\tgroupClickMenu: false,\n\tgroupTap: false,\n\tgroupDblTap: false,\n\tgroupTapHold: false,\n\n\tcolumnCalcs: true,\n\n\t//pagination callbacks\n\tpageLoaded: function pageLoaded() {},\n\n\t//localization callbacks\n\tlocalized: function localized() {},\n\n\t//validation callbacks\n\tvalidationMode: \"blocking\",\n\tvalidationFailed: function validationFailed() {},\n\n\t//history callbacks\n\thistoryUndo: function historyUndo() {},\n\thistoryRedo: function historyRedo() {},\n\n\t//scroll callbacks\n\tscrollHorizontal: function scrollHorizontal() {},\n\tscrollVertical: function scrollVertical() {}\n};\n\nTabulator.prototype.initializeOptions = function (options) {\n\n\t//warn user if option is not available\n\tif (options.invalidOptionWarnings !== false) {\n\t\tfor (var key in options) {\n\t\t\tif (typeof this.defaultOptions[key] === \"undefined\") {\n\t\t\t\tconsole.warn(\"Invalid table constructor option:\", key);\n\t\t\t}\n\t\t}\n\t}\n\n\t//assign options to table\n\tfor (var key in this.defaultOptions) {\n\t\tif (key in options) {\n\t\t\tthis.options[key] = options[key];\n\t\t} else {\n\t\t\tif (Array.isArray(this.defaultOptions[key])) {\n\t\t\t\tthis.options[key] = Object.assign([], this.defaultOptions[key]);\n\t\t\t} else if (_typeof(this.defaultOptions[key]) === \"object\" && this.defaultOptions[key] !== null) {\n\t\t\t\tthis.options[key] = Object.assign({}, this.defaultOptions[key]);\n\t\t\t} else {\n\t\t\t\tthis.options[key] = this.defaultOptions[key];\n\t\t\t}\n\t\t}\n\t}\n};\n\nTabulator.prototype.initializeElement = function (element) {\n\n\tif (typeof HTMLElement !== \"undefined\" && element instanceof HTMLElement) {\n\t\tthis.element = element;\n\t\treturn true;\n\t} else if (typeof element === \"string\") {\n\t\tthis.element = document.querySelector(element);\n\n\t\tif (this.element) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\tconsole.error(\"Tabulator Creation Error - no element found matching selector: \", element);\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tconsole.error(\"Tabulator Creation Error - Invalid element provided:\", element);\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.rtlCheck = function () {\n\tvar style = window.getComputedStyle(this.element);\n\n\tswitch (this.options.textDirection) {\n\t\tcase \"auto\":\n\t\t\tif (style.direction !== \"rtl\") {\n\t\t\t\tbreak;\n\t\t\t};\n\n\t\tcase \"rtl\":\n\t\t\tthis.element.classList.add(\"tabulator-rtl\");\n\t\t\tthis.rtl = true;\n\t\t\tbreak;\n\n\t\tcase \"ltr\":\n\t\t\tthis.element.classList.add(\"tabulator-ltr\");\n\n\t\tdefault:\n\t\t\tthis.rtl = false;\n\t}\n};\n\n//convert depricated functionality to new functions\nTabulator.prototype._mapDepricatedFunctionality = function () {\n\n\t//map depricated persistance setup options\n\tif (this.options.persistentLayout || this.options.persistentSort || this.options.persistentFilter) {\n\t\tif (!this.options.persistence) {\n\t\t\tthis.options.persistence = {};\n\t\t}\n\t}\n\n\tif (this.options.dataEdited) {\n\t\tconsole.warn(\"DEPRECATION WARNING - dataEdited option has been deprecated, please use the dataChanged option instead\");\n\t\tthis.options.dataChanged = this.options.dataEdited;\n\t}\n\n\tif (this.options.downloadDataFormatter) {\n\t\tconsole.warn(\"DEPRECATION WARNING - downloadDataFormatter option has been deprecated\");\n\t}\n\n\tif (typeof this.options.clipboardCopyHeader !== \"undefined\") {\n\t\tthis.options.columnHeaders = this.options.clipboardCopyHeader;\n\t\tconsole.warn(\"DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option\");\n\t}\n\n\tif (this.options.printVisibleRows !== true) {\n\t\tconsole.warn(\"printVisibleRows option is deprecated, you should now use the printRowRange option\");\n\n\t\tthis.options.persistence.printRowRange = \"active\";\n\t}\n\n\tif (this.options.printCopyStyle !== true) {\n\t\tconsole.warn(\"printCopyStyle option is deprecated, you should now use the printStyled option\");\n\n\t\tthis.options.persistence.printStyled = this.options.printCopyStyle;\n\t}\n\n\tif (this.options.persistentLayout) {\n\t\tconsole.warn(\"persistentLayout option is deprecated, you should now use the persistence option\");\n\n\t\tif (this.options.persistence !== true && typeof this.options.persistence.columns === \"undefined\") {\n\t\t\tthis.options.persistence.columns = true;\n\t\t}\n\t}\n\n\tif (this.options.persistentSort) {\n\t\tconsole.warn(\"persistentSort option is deprecated, you should now use the persistence option\");\n\n\t\tif (this.options.persistence !== true && typeof this.options.persistence.sort === \"undefined\") {\n\t\t\tthis.options.persistence.sort = true;\n\t\t}\n\t}\n\n\tif (this.options.persistentFilter) {\n\t\tconsole.warn(\"persistentFilter option is deprecated, you should now use the persistence option\");\n\n\t\tif (this.options.persistence !== true && typeof this.options.persistence.filter === \"undefined\") {\n\t\t\tthis.options.persistence.filter = true;\n\t\t}\n\t}\n\n\tif (this.options.columnVertAlign) {\n\t\tconsole.warn(\"columnVertAlign option is deprecated, you should now use the columnHeaderVertAlign option\");\n\n\t\tthis.options.columnHeaderVertAlign = this.options.columnVertAlign;\n\t}\n};\n\nTabulator.prototype._clearSelection = function () {\n\n\tthis.element.classList.add(\"tabulator-block-select\");\n\n\tif (window.getSelection) {\n\t\tif (window.getSelection().empty) {\n\t\t\t// Chrome\n\t\t\twindow.getSelection().empty();\n\t\t} else if (window.getSelection().removeAllRanges) {\n\t\t\t// Firefox\n\t\t\twindow.getSelection().removeAllRanges();\n\t\t}\n\t} else if (document.selection) {\n\t\t// IE?\n\t\tdocument.selection.empty();\n\t}\n\n\tthis.element.classList.remove(\"tabulator-block-select\");\n};\n\n//concreate table\nTabulator.prototype._create = function () {\n\tthis._clearObjectPointers();\n\n\tthis._mapDepricatedFunctionality();\n\n\tthis.bindModules();\n\n\tthis.rtlCheck();\n\n\tif (this.element.tagName === \"TABLE\") {\n\t\tif (this.modExists(\"htmlTableImport\", true)) {\n\t\t\tthis.modules.htmlTableImport.parseTable();\n\t\t}\n\t}\n\n\tthis.columnManager = new ColumnManager(this);\n\tthis.rowManager = new RowManager(this);\n\tthis.footerManager = new FooterManager(this);\n\n\tthis.columnManager.setRowManager(this.rowManager);\n\tthis.rowManager.setColumnManager(this.columnManager);\n\n\tif (this.options.virtualDomHoz) {\n\t\tthis.vdomHoz = new VDomHoz(this);\n\t}\n\n\tthis._buildElement();\n\n\tthis._loadInitialData();\n};\n\n//clear pointers to objects in default config object\nTabulator.prototype._clearObjectPointers = function () {\n\tthis.options.columns = this.options.columns.slice(0);\n\n\tif (!this.options.reactiveData) {\n\t\tthis.options.data = this.options.data.slice(0);\n\t}\n};\n\n//build tabulator element\nTabulator.prototype._buildElement = function () {\n\tvar _this24 = this;\n\n\tvar element = this.element,\n\t mod = this.modules,\n\t options = this.options;\n\n\toptions.tableBuilding.call(this);\n\n\telement.classList.add(\"tabulator\");\n\telement.setAttribute(\"role\", \"grid\");\n\n\t//empty element\n\twhile (element.firstChild) {\n\t\telement.removeChild(element.firstChild);\n\t} //set table height\n\tif (options.height) {\n\t\toptions.height = isNaN(options.height) ? options.height : options.height + \"px\";\n\t\telement.style.height = options.height;\n\t}\n\n\t//set table min height\n\tif (options.minHeight !== false) {\n\t\toptions.minHeight = isNaN(options.minHeight) ? options.minHeight : options.minHeight + \"px\";\n\t\telement.style.minHeight = options.minHeight;\n\t}\n\n\t//set table maxHeight\n\tif (options.maxHeight !== false) {\n\t\toptions.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + \"px\";\n\t\telement.style.maxHeight = options.maxHeight;\n\t}\n\n\tthis.columnManager.initialize();\n\tthis.rowManager.initialize();\n\n\tthis._detectBrowser();\n\n\tif (this.modExists(\"layout\", true)) {\n\t\tmod.layout.initialize(options.layout);\n\t}\n\n\t//set localization\n\n\tmod.localize.initialize();\n\n\tif (options.headerFilterPlaceholder !== false) {\n\t\tmod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);\n\t}\n\n\tfor (var locale in options.langs) {\n\t\tmod.localize.installLang(locale, options.langs[locale]);\n\t}\n\n\tmod.localize.setLocale(options.locale);\n\n\t//configure placeholder element\n\tif (typeof options.placeholder == \"string\") {\n\n\t\tvar el = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-placeholder\");\n\n\t\tvar span = document.createElement(\"span\");\n\t\tspan.innerHTML = options.placeholder;\n\n\t\tel.appendChild(span);\n\n\t\toptions.placeholder = el;\n\t}\n\n\t//build table elements\n\telement.appendChild(this.columnManager.getElement());\n\telement.appendChild(this.rowManager.getElement());\n\n\tif (options.footerElement) {\n\t\tthis.footerManager.activate();\n\t}\n\n\tif (options.persistence && this.modExists(\"persistence\", true)) {\n\t\tmod.persistence.initialize();\n\t}\n\n\tif (options.movableRows && this.modExists(\"moveRow\")) {\n\t\tmod.moveRow.initialize();\n\t}\n\n\tif (options.autoColumns && this.options.data) {\n\t\tthis.columnManager.generateColumnsFromRowData(this.options.data);\n\t}\n\n\tif (this.modExists(\"columnCalcs\")) {\n\t\tmod.columnCalcs.initialize();\n\t}\n\n\tthis.columnManager.setColumns(options.columns);\n\n\tif (options.dataTree && this.modExists(\"dataTree\", true)) {\n\t\tmod.dataTree.initialize();\n\t}\n\n\tif (this.modExists(\"frozenRows\")) {\n\t\tthis.modules.frozenRows.initialize();\n\t}\n\n\tif ((options.persistence && this.modExists(\"persistence\", true) && mod.persistence.config.sort || options.initialSort) && this.modExists(\"sort\", true)) {\n\t\tvar sorters = [];\n\n\t\tif (options.persistence && this.modExists(\"persistence\", true) && mod.persistence.config.sort) {\n\t\t\tsorters = mod.persistence.load(\"sort\");\n\n\t\t\tif (sorters === false && options.initialSort) {\n\t\t\t\tsorters = options.initialSort;\n\t\t\t}\n\t\t} else if (options.initialSort) {\n\t\t\tsorters = options.initialSort;\n\t\t}\n\n\t\tmod.sort.setSort(sorters);\n\t}\n\n\tif ((options.persistence && this.modExists(\"persistence\", true) && mod.persistence.config.filter || options.initialFilter) && this.modExists(\"filter\", true)) {\n\t\tvar filters = [];\n\n\t\tif (options.persistence && this.modExists(\"persistence\", true) && mod.persistence.config.filter) {\n\t\t\tfilters = mod.persistence.load(\"filter\");\n\n\t\t\tif (filters === false && options.initialFilter) {\n\t\t\t\tfilters = options.initialFilter;\n\t\t\t}\n\t\t} else if (options.initialFilter) {\n\t\t\tfilters = options.initialFilter;\n\t\t}\n\n\t\tmod.filter.setFilter(filters);\n\t}\n\n\tif (options.initialHeaderFilter && this.modExists(\"filter\", true)) {\n\t\toptions.initialHeaderFilter.forEach(function (item) {\n\n\t\t\tvar column = _this24.columnManager.findColumn(item.field);\n\n\t\t\tif (column) {\n\t\t\t\tmod.filter.setHeaderFilterValue(column, item.value);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", item.field);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t}\n\n\tif (this.modExists(\"ajax\")) {\n\t\tmod.ajax.initialize();\n\t}\n\n\tif (options.pagination && this.modExists(\"page\", true)) {\n\t\tmod.page.initialize();\n\t}\n\n\tif (options.groupBy && this.modExists(\"groupRows\", true)) {\n\t\tmod.groupRows.initialize();\n\t}\n\n\tif (this.modExists(\"keybindings\")) {\n\t\tmod.keybindings.initialize();\n\t}\n\n\tif (this.modExists(\"selectRow\")) {\n\t\tmod.selectRow.clearSelectionData(true);\n\t}\n\n\tif (options.autoResize && this.modExists(\"resizeTable\")) {\n\t\tmod.resizeTable.initialize();\n\t}\n\n\tif (this.modExists(\"clipboard\")) {\n\t\tmod.clipboard.initialize();\n\t}\n\n\tif (options.printAsHtml && this.modExists(\"print\")) {\n\t\tmod.print.initialize();\n\t}\n\n\toptions.tableBuilt.call(this);\n};\n\nTabulator.prototype._loadInitialData = function () {\n\tvar self = this;\n\n\tif (self.options.pagination && self.modExists(\"page\")) {\n\t\tself.modules.page.reset(true, true);\n\n\t\tif (self.options.pagination == \"local\") {\n\t\t\tif (self.options.data.length) {\n\t\t\t\tself.rowManager.setData(self.options.data, false, true);\n\t\t\t} else {\n\t\t\t\tif ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists(\"ajax\")) {\n\t\t\t\t\tself.modules.ajax.loadData(false, true).then(function () {}).catch(function () {\n\t\t\t\t\t\tif (self.options.paginationInitialPage) {\n\t\t\t\t\t\t\tself.modules.page.setPage(self.options.paginationInitialPage);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tself.rowManager.setData(self.options.data, false, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (self.options.paginationInitialPage) {\n\t\t\t\tself.modules.page.setPage(self.options.paginationInitialPage);\n\t\t\t}\n\t\t} else {\n\t\t\tif (self.options.ajaxURL) {\n\t\t\t\tself.modules.page.setPage(self.options.paginationInitialPage).then(function () {}).catch(function () {});\n\t\t\t} else {\n\t\t\t\tself.rowManager.setData([], false, true);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (self.options.data.length) {\n\t\t\tself.rowManager.setData(self.options.data);\n\t\t} else {\n\t\t\tif ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists(\"ajax\")) {\n\t\t\t\tself.modules.ajax.loadData(false, true).then(function () {}).catch(function () {});\n\t\t\t} else {\n\t\t\t\tself.rowManager.setData(self.options.data, false, true);\n\t\t\t}\n\t\t}\n\t}\n};\n\n//deconstructor\nTabulator.prototype.destroy = function () {\n\tvar element = this.element;\n\n\tTabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication\n\n\tif (this.options.reactiveData && this.modExists(\"reactiveData\", true)) {\n\t\tthis.modules.reactiveData.unwatchData();\n\t}\n\n\t//clear row data\n\tthis.rowManager.rows.forEach(function (row) {\n\t\trow.wipe();\n\t});\n\n\tthis.rowManager.rows = [];\n\tthis.rowManager.activeRows = [];\n\tthis.rowManager.displayRows = [];\n\n\t//clear event bindings\n\tif (this.options.autoResize && this.modExists(\"resizeTable\")) {\n\t\tthis.modules.resizeTable.clearBindings();\n\t}\n\n\tif (this.modExists(\"keybindings\")) {\n\t\tthis.modules.keybindings.clearBindings();\n\t}\n\n\t//clear DOM\n\twhile (element.firstChild) {\n\t\telement.removeChild(element.firstChild);\n\t}element.classList.remove(\"tabulator\");\n};\n\nTabulator.prototype._detectBrowser = function () {\n\tvar ua = navigator.userAgent || navigator.vendor || window.opera;\n\n\tif (ua.indexOf(\"Trident\") > -1) {\n\t\tthis.browser = \"ie\";\n\t\tthis.browserSlow = true;\n\t} else if (ua.indexOf(\"Edge\") > -1) {\n\t\tthis.browser = \"edge\";\n\t\tthis.browserSlow = true;\n\t} else if (ua.indexOf(\"Firefox\") > -1) {\n\t\tthis.browser = \"firefox\";\n\t\tthis.browserSlow = false;\n\t} else {\n\t\tthis.browser = \"other\";\n\t\tthis.browserSlow = false;\n\t}\n\n\tthis.browserMobile = /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(ua.substr(0, 4));\n};\n\n////////////////// Data Handling //////////////////\n\n//block table redrawing\nTabulator.prototype.blockRedraw = function () {\n\treturn this.rowManager.blockRedraw();\n};\n\n//restore table redrawing\nTabulator.prototype.restoreRedraw = function () {\n\treturn this.rowManager.restoreRedraw();\n};\n\n//local data from local file\nTabulator.prototype.setDataFromLocalFile = function (extensions) {\n\tvar _this25 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar input = document.createElement(\"input\");\n\t\tinput.type = \"file\";\n\t\tinput.accept = extensions || \".json,application/json\";\n\n\t\tinput.addEventListener(\"change\", function (e) {\n\t\t\tvar file = input.files[0],\n\t\t\t reader = new FileReader(),\n\t\t\t data;\n\n\t\t\treader.readAsText(file);\n\n\t\t\treader.onload = function (e) {\n\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(reader.result);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tconsole.warn(\"File Load Error - File contents is invalid JSON\", e);\n\t\t\t\t\treject(e);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t_this25.setData(data).then(function (data) {\n\t\t\t\t\tresolve(data);\n\t\t\t\t}).catch(function (err) {\n\t\t\t\t\tresolve(err);\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treader.onerror = function (e) {\n\t\t\t\tconsole.warn(\"File Load Error - Unable to read file\");\n\t\t\t\treject();\n\t\t\t};\n\t\t});\n\n\t\tinput.click();\n\t});\n};\n\n//load data\nTabulator.prototype.setData = function (data, params, config) {\n\tif (this.modExists(\"ajax\")) {\n\t\tthis.modules.ajax.blockActiveRequest();\n\t}\n\n\treturn this._setData(data, params, config, false, true);\n};\n\nTabulator.prototype._setData = function (data, params, config, inPosition, columnsChanged) {\n\tvar self = this;\n\n\tif (typeof data === \"string\") {\n\t\tif (data.indexOf(\"{\") == 0 || data.indexOf(\"[\") == 0) {\n\t\t\t//data is a json encoded string\n\t\t\treturn self.rowManager.setData(JSON.parse(data), inPosition, columnsChanged);\n\t\t} else {\n\n\t\t\tif (self.modExists(\"ajax\", true)) {\n\t\t\t\tif (params) {\n\t\t\t\t\tself.modules.ajax.setParams(params);\n\t\t\t\t}\n\n\t\t\t\tif (config) {\n\t\t\t\t\tself.modules.ajax.setConfig(config);\n\t\t\t\t}\n\n\t\t\t\tself.modules.ajax.setUrl(data);\n\n\t\t\t\tif (self.options.pagination == \"remote\" && self.modExists(\"page\", true)) {\n\t\t\t\t\tself.modules.page.reset(true, true);\n\t\t\t\t\treturn self.modules.page.setPage(1);\n\t\t\t\t} else {\n\t\t\t\t\t//assume data is url, make ajax call to url to get data\n\t\t\t\t\treturn self.modules.ajax.loadData(inPosition, columnsChanged);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (data) {\n\t\t\t//asume data is already an object\n\t\t\treturn self.rowManager.setData(data, inPosition, columnsChanged);\n\t\t} else {\n\n\t\t\t//no data provided, check if ajaxURL is present;\n\t\t\tif (self.modExists(\"ajax\") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {\n\n\t\t\t\tif (self.options.pagination == \"remote\" && self.modExists(\"page\", true)) {\n\t\t\t\t\tself.modules.page.reset(true, true);\n\t\t\t\t\treturn self.modules.page.setPage(1);\n\t\t\t\t} else {\n\t\t\t\t\treturn self.modules.ajax.loadData(inPosition, columnsChanged);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t//empty data\n\t\t\t\treturn self.rowManager.setData([], inPosition, columnsChanged);\n\t\t\t}\n\t\t}\n\t}\n};\n\n//clear data\nTabulator.prototype.clearData = function () {\n\tif (this.modExists(\"ajax\")) {\n\t\tthis.modules.ajax.blockActiveRequest();\n\t}\n\n\tthis.rowManager.clearData();\n};\n\n//get table data array\nTabulator.prototype.getData = function (active) {\n\n\tif (active === true) {\n\t\tconsole.warn(\"passing a boolean to the getData function is deprecated, you should now pass the string 'active'\");\n\t\tactive = \"active\";\n\t}\n\n\treturn this.rowManager.getData(active);\n};\n\n//get table data array count\nTabulator.prototype.getDataCount = function (active) {\n\n\tif (active === true) {\n\t\tconsole.warn(\"passing a boolean to the getDataCount function is deprecated, you should now pass the string 'active'\");\n\t\tactive = \"active\";\n\t}\n\n\treturn this.rowManager.getDataCount(active);\n};\n\n//search for specific row components\nTabulator.prototype.searchRows = function (field, type, value) {\n\tif (this.modExists(\"filter\", true)) {\n\t\treturn this.modules.filter.search(\"rows\", field, type, value);\n\t}\n};\n\n//search for specific data\nTabulator.prototype.searchData = function (field, type, value) {\n\tif (this.modExists(\"filter\", true)) {\n\t\treturn this.modules.filter.search(\"data\", field, type, value);\n\t}\n};\n\n//get table html\nTabulator.prototype.getHtml = function (visible, style, config) {\n\tif (this.modExists(\"export\", true)) {\n\t\treturn this.modules.export.getHtml(visible, style, config);\n\t}\n};\n\n//get print html\nTabulator.prototype.print = function (visible, style, config) {\n\tif (this.modExists(\"print\", true)) {\n\t\treturn this.modules.print.printFullscreen(visible, style, config);\n\t}\n};\n\n//retrieve Ajax URL\nTabulator.prototype.getAjaxUrl = function () {\n\tif (this.modExists(\"ajax\", true)) {\n\t\treturn this.modules.ajax.getUrl();\n\t}\n};\n\n//replace data, keeping table in position with same sort\nTabulator.prototype.replaceData = function (data, params, config) {\n\tif (this.modExists(\"ajax\")) {\n\t\tthis.modules.ajax.blockActiveRequest();\n\t}\n\n\treturn this._setData(data, params, config, true);\n};\n\n//update table data\nTabulator.prototype.updateData = function (data) {\n\tvar _this26 = this;\n\n\tvar self = this;\n\tvar responses = 0;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (_this26.modExists(\"ajax\")) {\n\t\t\t_this26.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\tif (typeof data === \"string\") {\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif (data) {\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tvar row = self.rowManager.findRow(item[self.options.index]);\n\n\t\t\t\tif (row) {\n\t\t\t\t\tresponses++;\n\n\t\t\t\t\trow.updateData(item).then(function () {\n\t\t\t\t\t\tresponses--;\n\n\t\t\t\t\t\tif (!responses) {\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\treject(\"Update Error - No data provided\");\n\t\t}\n\t});\n};\n\nTabulator.prototype.addData = function (data, pos, index) {\n\tvar _this27 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (_this27.modExists(\"ajax\")) {\n\t\t\t_this27.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\tif (typeof data === \"string\") {\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif (data) {\n\t\t\t_this27.rowManager.addRows(data, pos, index).then(function (rows) {\n\t\t\t\tvar output = [];\n\n\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\toutput.push(row.getComponent());\n\t\t\t\t});\n\n\t\t\t\tresolve(output);\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\treject(\"Update Error - No data provided\");\n\t\t}\n\t});\n};\n\n//update table data\nTabulator.prototype.updateOrAddData = function (data) {\n\tvar _this28 = this;\n\n\tvar self = this,\n\t rows = [],\n\t responses = 0;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (_this28.modExists(\"ajax\")) {\n\t\t\t_this28.modules.ajax.blockActiveRequest();\n\t\t}\n\n\t\tif (typeof data === \"string\") {\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif (data) {\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tvar row = self.rowManager.findRow(item[self.options.index]);\n\n\t\t\t\tresponses++;\n\n\t\t\t\tif (row) {\n\t\t\t\t\trow.updateData(item).then(function () {\n\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\trows.push(row.getComponent());\n\n\t\t\t\t\t\tif (!responses) {\n\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tself.rowManager.addRows(item).then(function (newRows) {\n\t\t\t\t\t\tresponses--;\n\t\t\t\t\t\trows.push(newRows[0].getComponent());\n\n\t\t\t\t\t\tif (!responses) {\n\t\t\t\t\t\t\tresolve(rows);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Update Error - No data provided\");\n\t\t\treject(\"Update Error - No data provided\");\n\t\t}\n\t});\n};\n\n//get row object\nTabulator.prototype.getRow = function (index) {\n\tvar row = this.rowManager.findRow(index);\n\n\tif (row) {\n\t\treturn row.getComponent();\n\t} else {\n\t\tconsole.warn(\"Find Error - No matching row found:\", index);\n\t\treturn false;\n\t}\n};\n\n//get row object\nTabulator.prototype.getRowFromPosition = function (position, active) {\n\tvar row = this.rowManager.getRowFromPosition(position, active);\n\n\tif (row) {\n\t\treturn row.getComponent();\n\t} else {\n\t\tconsole.warn(\"Find Error - No matching row found:\", position);\n\t\treturn false;\n\t}\n};\n\n//delete row from table\nTabulator.prototype.deleteRow = function (index) {\n\tvar _this29 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar self = _this29,\n\t\t count = 0,\n\t\t successCount = 0,\n\t\t foundRows = [];\n\n\t\tfunction doneCheck() {\n\t\t\tcount++;\n\n\t\t\tif (count == index.length) {\n\t\t\t\tif (successCount) {\n\t\t\t\t\tself.rowManager.reRenderInPosition();\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!Array.isArray(index)) {\n\t\t\tindex = [index];\n\t\t}\n\n\t\t//find matching rows\n\t\tindex.forEach(function (item) {\n\t\t\tvar row = _this29.rowManager.findRow(item, true);\n\n\t\t\tif (row) {\n\t\t\t\tfoundRows.push(row);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Delete Error - No matching row found:\", item);\n\t\t\t\treject(\"Delete Error - No matching row found\");\n\t\t\t\tdoneCheck();\n\t\t\t}\n\t\t});\n\n\t\t//sort rows into correct order to ensure smooth delete from table\n\t\tfoundRows.sort(function (a, b) {\n\t\t\treturn _this29.rowManager.rows.indexOf(a) > _this29.rowManager.rows.indexOf(b) ? 1 : -1;\n\t\t});\n\n\t\tfoundRows.forEach(function (row) {\n\t\t\trow.delete().then(function () {\n\t\t\t\tsuccessCount++;\n\t\t\t\tdoneCheck();\n\t\t\t}).catch(function (err) {\n\t\t\t\tdoneCheck();\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t});\n};\n\n//add row to table\nTabulator.prototype.addRow = function (data, pos, index) {\n\tvar _this30 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (typeof data === \"string\") {\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\t_this30.rowManager.addRows(data, pos, index).then(function (rows) {\n\t\t\t//recalc column calculations if present\n\t\t\tif (_this30.modExists(\"columnCalcs\")) {\n\t\t\t\t_this30.modules.columnCalcs.recalc(_this30.rowManager.activeRows);\n\t\t\t}\n\n\t\t\tresolve(rows[0].getComponent());\n\t\t});\n\t});\n};\n\n//update a row if it exitsts otherwise create it\nTabulator.prototype.updateOrAddRow = function (index, data) {\n\tvar _this31 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar row = _this31.rowManager.findRow(index);\n\n\t\tif (typeof data === \"string\") {\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif (row) {\n\t\t\trow.updateData(data).then(function () {\n\t\t\t\t//recalc column calculations if present\n\t\t\t\tif (_this31.modExists(\"columnCalcs\")) {\n\t\t\t\t\t_this31.modules.columnCalcs.recalc(_this31.rowManager.activeRows);\n\t\t\t\t}\n\n\t\t\t\tresolve(row.getComponent());\n\t\t\t}).catch(function (err) {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t} else {\n\t\t\trow = _this31.rowManager.addRows(data).then(function (rows) {\n\t\t\t\t//recalc column calculations if present\n\t\t\t\tif (_this31.modExists(\"columnCalcs\")) {\n\t\t\t\t\t_this31.modules.columnCalcs.recalc(_this31.rowManager.activeRows);\n\t\t\t\t}\n\n\t\t\t\tresolve(rows[0].getComponent());\n\t\t\t}).catch(function (err) {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t}\n\t});\n};\n\n//update row data\nTabulator.prototype.updateRow = function (index, data) {\n\tvar _this32 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar row = _this32.rowManager.findRow(index);\n\n\t\tif (typeof data === \"string\") {\n\t\t\tdata = JSON.parse(data);\n\t\t}\n\n\t\tif (row) {\n\t\t\trow.updateData(data).then(function () {\n\t\t\t\tresolve(row.getComponent());\n\t\t\t}).catch(function (err) {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Update Error - No matching row found:\", index);\n\t\t\treject(\"Update Error - No matching row found\");\n\t\t}\n\t});\n};\n\n//scroll to row in DOM\nTabulator.prototype.scrollToRow = function (index, position, ifVisible) {\n\tvar _this33 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar row = _this33.rowManager.findRow(index);\n\n\t\tif (row) {\n\t\t\t_this33.rowManager.scrollToRow(row, position, ifVisible).then(function () {\n\t\t\t\tresolve();\n\t\t\t}).catch(function (err) {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Scroll Error - No matching row found:\", index);\n\t\t\treject(\"Scroll Error - No matching row found\");\n\t\t}\n\t});\n};\n\nTabulator.prototype.moveRow = function (from, to, after) {\n\tvar fromRow = this.rowManager.findRow(from);\n\n\tif (fromRow) {\n\t\tfromRow.moveToRow(to, after);\n\t} else {\n\t\tconsole.warn(\"Move Error - No matching row found:\", from);\n\t}\n};\n\nTabulator.prototype.getRows = function (active) {\n\n\tif (active === true) {\n\t\tconsole.warn(\"passing a boolean to the getRows function is deprecated, you should now pass the string 'active'\");\n\t\tactive = \"active\";\n\t}\n\n\treturn this.rowManager.getComponents(active);\n};\n\n//get position of row in table\nTabulator.prototype.getRowPosition = function (index, active) {\n\tvar row = this.rowManager.findRow(index);\n\n\tif (row) {\n\t\treturn this.rowManager.getRowPosition(row, active);\n\t} else {\n\t\tconsole.warn(\"Position Error - No matching row found:\", index);\n\t\treturn false;\n\t}\n};\n\n//copy table data to clipboard\nTabulator.prototype.copyToClipboard = function (selector) {\n\tif (this.modExists(\"clipboard\", true)) {\n\t\tthis.modules.clipboard.copy(selector);\n\t}\n};\n\n/////////////// Column Functions ///////////////\n\nTabulator.prototype.setColumns = function (definition) {\n\tthis.columnManager.setColumns(definition);\n};\n\nTabulator.prototype.getColumns = function (structured) {\n\treturn this.columnManager.getComponents(structured);\n};\n\nTabulator.prototype.getColumn = function (field) {\n\tvar col = this.columnManager.findColumn(field);\n\n\tif (col) {\n\t\treturn col.getComponent();\n\t} else {\n\t\tconsole.warn(\"Find Error - No matching column found:\", field);\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.getColumnDefinitions = function () {\n\treturn this.columnManager.getDefinitionTree();\n};\n\nTabulator.prototype.getColumnLayout = function () {\n\tif (this.modExists(\"persistence\", true)) {\n\t\treturn this.modules.persistence.parseColumns(this.columnManager.getColumns());\n\t}\n};\n\nTabulator.prototype.setColumnLayout = function (layout) {\n\tif (this.modExists(\"persistence\", true)) {\n\t\tthis.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nTabulator.prototype.showColumn = function (field) {\n\tvar column = this.columnManager.findColumn(field);\n\n\tif (column) {\n\t\tcolumn.show();\n\n\t\tif (this.options.responsiveLayout && this.modExists(\"responsiveLayout\", true)) {\n\t\t\tthis.modules.responsiveLayout.update();\n\t\t}\n\t} else {\n\t\tconsole.warn(\"Column Show Error - No matching column found:\", field);\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.hideColumn = function (field) {\n\tvar column = this.columnManager.findColumn(field);\n\n\tif (column) {\n\t\tcolumn.hide();\n\n\t\tif (this.options.responsiveLayout && this.modExists(\"responsiveLayout\", true)) {\n\t\t\tthis.modules.responsiveLayout.update();\n\t\t}\n\t} else {\n\t\tconsole.warn(\"Column Hide Error - No matching column found:\", field);\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.toggleColumn = function (field) {\n\tvar column = this.columnManager.findColumn(field);\n\n\tif (column) {\n\t\tif (column.visible) {\n\t\t\tcolumn.hide();\n\t\t} else {\n\t\t\tcolumn.show();\n\t\t}\n\t} else {\n\t\tconsole.warn(\"Column Visibility Toggle Error - No matching column found:\", field);\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.addColumn = function (definition, before, field) {\n\tvar _this34 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar column = _this34.columnManager.findColumn(field);\n\n\t\t_this34.columnManager.addColumn(definition, before, column).then(function (column) {\n\t\t\tresolve(column.getComponent());\n\t\t}).catch(function (err) {\n\t\t\treject(err);\n\t\t});\n\t});\n};\n\nTabulator.prototype.deleteColumn = function (field) {\n\tvar _this35 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar column = _this35.columnManager.findColumn(field);\n\n\t\tif (column) {\n\t\t\tcolumn.delete().then(function () {\n\t\t\t\tresolve();\n\t\t\t}).catch(function (err) {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Column Delete Error - No matching column found:\", field);\n\t\t\treject();\n\t\t}\n\t});\n};\n\nTabulator.prototype.updateColumnDefinition = function (field, definition) {\n\tvar _this36 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar column = _this36.columnManager.findColumn(field);\n\n\t\tif (column) {\n\t\t\tcolumn.updateDefinition(definition).then(function (col) {\n\t\t\t\tresolve(col);\n\t\t\t}).catch(function (err) {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Column Update Error - No matching column found:\", field);\n\t\t\treject();\n\t\t}\n\t});\n};\n\nTabulator.prototype.moveColumn = function (from, to, after) {\n\tvar fromColumn = this.columnManager.findColumn(from);\n\tvar toColumn = this.columnManager.findColumn(to);\n\n\tif (fromColumn) {\n\t\tif (toColumn) {\n\t\t\tthis.columnManager.moveColumn(fromColumn, toColumn, after);\n\t\t} else {\n\t\t\tconsole.warn(\"Move Error - No matching column found:\", toColumn);\n\t\t}\n\t} else {\n\t\tconsole.warn(\"Move Error - No matching column found:\", from);\n\t}\n};\n\n//scroll to column in DOM\nTabulator.prototype.scrollToColumn = function (field, position, ifVisible) {\n\tvar _this37 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tvar column = _this37.columnManager.findColumn(field);\n\n\t\tif (column) {\n\t\t\t_this37.columnManager.scrollToColumn(column, position, ifVisible).then(function () {\n\t\t\t\tresolve();\n\t\t\t}).catch(function (err) {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Scroll Error - No matching column found:\", field);\n\t\t\treject(\"Scroll Error - No matching column found\");\n\t\t}\n\t});\n};\n\n//////////// Localization Functions ////////////\nTabulator.prototype.setLocale = function (locale) {\n\tthis.modules.localize.setLocale(locale);\n};\n\nTabulator.prototype.getLocale = function () {\n\treturn this.modules.localize.getLocale();\n};\n\nTabulator.prototype.getLang = function (locale) {\n\treturn this.modules.localize.getLang(locale);\n};\n\n//////////// General Public Functions ////////////\n\n//redraw list without updating data\nTabulator.prototype.redraw = function (force) {\n\tthis.columnManager.redraw(force);\n\tthis.rowManager.redraw(force);\n};\n\nTabulator.prototype.setHeight = function (height) {\n\n\tif (this.rowManager.renderMode !== \"classic\") {\n\t\tthis.options.height = isNaN(height) ? height : height + \"px\";\n\t\tthis.element.style.height = this.options.height;\n\t\tthis.rowManager.setRenderMode();\n\t\tthis.rowManager.redraw();\n\t} else {\n\t\tconsole.warn(\"setHeight function is not available in classic render mode\");\n\t}\n};\n\n///////////////////// Sorting ////////////////////\n\n//trigger sort\nTabulator.prototype.setSort = function (sortList, dir) {\n\tif (this.modExists(\"sort\", true)) {\n\t\tthis.modules.sort.setSort(sortList, dir);\n\t\tthis.rowManager.sorterRefresh();\n\t}\n};\n\nTabulator.prototype.getSorters = function () {\n\tif (this.modExists(\"sort\", true)) {\n\t\treturn this.modules.sort.getSort();\n\t}\n};\n\nTabulator.prototype.clearSort = function () {\n\tif (this.modExists(\"sort\", true)) {\n\t\tthis.modules.sort.clear();\n\t\tthis.rowManager.sorterRefresh();\n\t}\n};\n\n///////////////////// Filtering ////////////////////\n\n//set standard filters\nTabulator.prototype.setFilter = function (field, type, value, params) {\n\tif (this.modExists(\"filter\", true)) {\n\t\tthis.modules.filter.setFilter(field, type, value, params);\n\t\tthis.rowManager.filterRefresh();\n\t}\n};\n\n//set standard filters\nTabulator.prototype.refreshFilter = function () {\n\tif (this.modExists(\"filter\", true)) {\n\t\tthis.rowManager.filterRefresh();\n\t}\n};\n\n//add filter to array\nTabulator.prototype.addFilter = function (field, type, value, params) {\n\tif (this.modExists(\"filter\", true)) {\n\t\tthis.modules.filter.addFilter(field, type, value, params);\n\t\tthis.rowManager.filterRefresh();\n\t}\n};\n\n//get all filters\nTabulator.prototype.getFilters = function (all) {\n\tif (this.modExists(\"filter\", true)) {\n\t\treturn this.modules.filter.getFilters(all);\n\t}\n};\n\nTabulator.prototype.setHeaderFilterFocus = function (field) {\n\tif (this.modExists(\"filter\", true)) {\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\t\t\tthis.modules.filter.setHeaderFilterFocus(column);\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Focus Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\nTabulator.prototype.getHeaderFilterValue = function (field) {\n\tif (this.modExists(\"filter\", true)) {\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\t\t\treturn this.modules.filter.getHeaderFilterValue(column);\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t}\n\t}\n};\n\nTabulator.prototype.setHeaderFilterValue = function (field, value) {\n\tif (this.modExists(\"filter\", true)) {\n\t\tvar column = this.columnManager.findColumn(field);\n\n\t\tif (column) {\n\t\t\tthis.modules.filter.setHeaderFilterValue(column, value);\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Error - No matching column found:\", field);\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\nTabulator.prototype.getHeaderFilters = function () {\n\tif (this.modExists(\"filter\", true)) {\n\t\treturn this.modules.filter.getHeaderFilters();\n\t}\n};\n\n//remove filter from array\nTabulator.prototype.removeFilter = function (field, type, value) {\n\tif (this.modExists(\"filter\", true)) {\n\t\tthis.modules.filter.removeFilter(field, type, value);\n\t\tthis.rowManager.filterRefresh();\n\t}\n};\n\n//clear filters\nTabulator.prototype.clearFilter = function (all) {\n\tif (this.modExists(\"filter\", true)) {\n\t\tthis.modules.filter.clearFilter(all);\n\t\tthis.rowManager.filterRefresh();\n\t}\n};\n\n//clear header filters\nTabulator.prototype.clearHeaderFilter = function () {\n\tif (this.modExists(\"filter\", true)) {\n\t\tthis.modules.filter.clearHeaderFilter();\n\t\tthis.rowManager.filterRefresh();\n\t}\n};\n\n///////////////////// select ////////////////////\nTabulator.prototype.selectRow = function (rows) {\n\tif (this.modExists(\"selectRow\", true)) {\n\t\tif (rows === true) {\n\t\t\tconsole.warn(\"passing a boolean to the selectRowselectRow function is deprecated, you should now pass the string 'active'\");\n\t\t\trows = \"active\";\n\t\t}\n\t\tthis.modules.selectRow.selectRows(rows);\n\t}\n};\n\nTabulator.prototype.deselectRow = function (rows) {\n\tif (this.modExists(\"selectRow\", true)) {\n\t\tthis.modules.selectRow.deselectRows(rows);\n\t}\n};\n\nTabulator.prototype.toggleSelectRow = function (row) {\n\tif (this.modExists(\"selectRow\", true)) {\n\t\tthis.modules.selectRow.toggleRow(row);\n\t}\n};\n\nTabulator.prototype.getSelectedRows = function () {\n\tif (this.modExists(\"selectRow\", true)) {\n\t\treturn this.modules.selectRow.getSelectedRows();\n\t}\n};\n\nTabulator.prototype.getSelectedData = function () {\n\tif (this.modExists(\"selectRow\", true)) {\n\t\treturn this.modules.selectRow.getSelectedData();\n\t}\n};\n\n///////////////////// validation ////////////////////\nTabulator.prototype.getInvalidCells = function () {\n\tif (this.modExists(\"validate\", true)) {\n\t\treturn this.modules.validate.getInvalidCells();\n\t}\n};\n\nTabulator.prototype.clearCellValidation = function (cells) {\n\tvar _this38 = this;\n\n\tif (this.modExists(\"validate\", true)) {\n\n\t\tif (!cells) {\n\t\t\tcells = this.modules.validate.getInvalidCells();\n\t\t}\n\n\t\tif (!Array.isArray(cells)) {\n\t\t\tcells = [cells];\n\t\t}\n\n\t\tcells.forEach(function (cell) {\n\t\t\t_this38.modules.validate.clearValidation(cell._getSelf());\n\t\t});\n\t}\n};\n\nTabulator.prototype.validate = function (cells) {\n\tvar output = [];\n\n\t//clear row data\n\tthis.rowManager.rows.forEach(function (row) {\n\t\tvar valid = row.validate();\n\n\t\tif (valid !== true) {\n\t\t\toutput = output.concat(valid);\n\t\t}\n\t});\n\n\treturn output.length ? output : true;\n};\n\n//////////// Pagination Functions ////////////\n\nTabulator.prototype.setMaxPage = function (max) {\n\tif (this.options.pagination && this.modExists(\"page\")) {\n\t\tthis.modules.page.setMaxPage(max);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.setPage = function (page) {\n\tif (this.options.pagination && this.modExists(\"page\")) {\n\t\treturn this.modules.page.setPage(page);\n\t} else {\n\t\treturn new Promise(function (resolve, reject) {\n\t\t\treject();\n\t\t});\n\t}\n};\n\nTabulator.prototype.setPageToRow = function (row) {\n\tvar _this39 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (_this39.options.pagination && _this39.modExists(\"page\")) {\n\t\t\trow = _this39.rowManager.findRow(row);\n\n\t\t\tif (row) {\n\t\t\t\t_this39.modules.page.setPageToRow(row).then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treject();\n\t\t\t}\n\t\t} else {\n\t\t\treject();\n\t\t}\n\t});\n};\n\nTabulator.prototype.setPageSize = function (size) {\n\tif (this.options.pagination && this.modExists(\"page\")) {\n\t\tthis.modules.page.setPageSize(size);\n\t\tthis.modules.page.setPage(1).then(function () {}).catch(function () {});\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.getPageSize = function () {\n\tif (this.options.pagination && this.modExists(\"page\", true)) {\n\t\treturn this.modules.page.getPageSize();\n\t}\n};\n\nTabulator.prototype.previousPage = function () {\n\tif (this.options.pagination && this.modExists(\"page\")) {\n\t\tthis.modules.page.previousPage();\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.nextPage = function () {\n\tif (this.options.pagination && this.modExists(\"page\")) {\n\t\tthis.modules.page.nextPage();\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.getPage = function () {\n\tif (this.options.pagination && this.modExists(\"page\")) {\n\t\treturn this.modules.page.getPage();\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.getPageMax = function () {\n\tif (this.options.pagination && this.modExists(\"page\")) {\n\t\treturn this.modules.page.getPageMax();\n\t} else {\n\t\treturn false;\n\t}\n};\n\n///////////////// Grouping Functions ///////////////\n\nTabulator.prototype.setGroupBy = function (groups) {\n\tif (this.modExists(\"groupRows\", true)) {\n\t\tthis.options.groupBy = groups;\n\t\tthis.modules.groupRows.initialize();\n\t\tthis.rowManager.refreshActiveData(\"display\");\n\n\t\tif (this.options.persistence && this.modExists(\"persistence\", true) && this.modules.persistence.config.group) {\n\t\t\tthis.modules.persistence.save(\"group\");\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.setGroupValues = function (groupValues) {\n\tif (this.modExists(\"groupRows\", true)) {\n\t\tthis.options.groupValues = groupValues;\n\t\tthis.modules.groupRows.initialize();\n\t\tthis.rowManager.refreshActiveData(\"display\");\n\n\t\tif (this.options.persistence && this.modExists(\"persistence\", true) && this.modules.persistence.config.group) {\n\t\t\tthis.modules.persistence.save(\"group\");\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.setGroupStartOpen = function (values) {\n\tif (this.modExists(\"groupRows\", true)) {\n\t\tthis.options.groupStartOpen = values;\n\t\tthis.modules.groupRows.initialize();\n\t\tif (this.options.groupBy) {\n\t\t\tthis.rowManager.refreshActiveData(\"group\");\n\n\t\t\tif (this.options.persistence && this.modExists(\"persistence\", true) && this.modules.persistence.config.group) {\n\t\t\t\tthis.modules.persistence.save(\"group\");\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.setGroupHeader = function (values) {\n\tif (this.modExists(\"groupRows\", true)) {\n\t\tthis.options.groupHeader = values;\n\t\tthis.modules.groupRows.initialize();\n\t\tif (this.options.groupBy) {\n\t\t\tthis.rowManager.refreshActiveData(\"group\");\n\n\t\t\tif (this.options.persistence && this.modExists(\"persistence\", true) && this.modules.persistence.config.group) {\n\t\t\t\tthis.modules.persistence.save(\"group\");\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Grouping Update - cant refresh view, no groups have been set\");\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.getGroups = function (values) {\n\tif (this.modExists(\"groupRows\", true)) {\n\t\treturn this.modules.groupRows.getGroups(true);\n\t} else {\n\t\treturn false;\n\t}\n};\n\n// get grouped table data in the same format as getData()\nTabulator.prototype.getGroupedData = function () {\n\tif (this.modExists(\"groupRows\", true)) {\n\t\treturn this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();\n\t}\n};\n\nTabulator.prototype.getEditedCells = function () {\n\tif (this.modExists(\"edit\", true)) {\n\t\treturn this.modules.edit.getEditedCells();\n\t}\n};\n\nTabulator.prototype.clearCellEdited = function (cells) {\n\tvar _this40 = this;\n\n\tif (this.modExists(\"edit\", true)) {\n\n\t\tif (!cells) {\n\t\t\tcells = this.modules.edit.getEditedCells();\n\t\t}\n\n\t\tif (!Array.isArray(cells)) {\n\t\t\tcells = [cells];\n\t\t}\n\n\t\tcells.forEach(function (cell) {\n\t\t\t_this40.modules.edit.clearEdited(cell._getSelf());\n\t\t});\n\t}\n};\n\n///////////////// Column Calculation Functions ///////////////\nTabulator.prototype.getCalcResults = function () {\n\tif (this.modExists(\"columnCalcs\", true)) {\n\t\treturn this.modules.columnCalcs.getResults();\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.recalc = function () {\n\tif (this.modExists(\"columnCalcs\", true)) {\n\t\tthis.modules.columnCalcs.recalcAll(this.rowManager.activeRows);\n\t}\n};\n\n/////////////// Navigation Management //////////////\n\nTabulator.prototype.navigatePrev = function () {\n\tvar cell = false;\n\n\tif (this.modExists(\"edit\", true)) {\n\t\tcell = this.modules.edit.currentCell;\n\n\t\tif (cell) {\n\t\t\treturn cell.nav().prev();\n\t\t}\n\t}\n\n\treturn false;\n};\n\nTabulator.prototype.navigateNext = function () {\n\tvar cell = false;\n\n\tif (this.modExists(\"edit\", true)) {\n\t\tcell = this.modules.edit.currentCell;\n\n\t\tif (cell) {\n\t\t\treturn cell.nav().next();\n\t\t}\n\t}\n\n\treturn false;\n};\n\nTabulator.prototype.navigateLeft = function () {\n\tvar cell = false;\n\n\tif (this.modExists(\"edit\", true)) {\n\t\tcell = this.modules.edit.currentCell;\n\n\t\tif (cell) {\n\t\t\te.preventDefault();\n\t\t\treturn cell.nav().left();\n\t\t}\n\t}\n\n\treturn false;\n};\n\nTabulator.prototype.navigateRight = function () {\n\tvar cell = false;\n\n\tif (this.modExists(\"edit\", true)) {\n\t\tcell = this.modules.edit.currentCell;\n\n\t\tif (cell) {\n\t\t\te.preventDefault();\n\t\t\treturn cell.nav().right();\n\t\t}\n\t}\n\n\treturn false;\n};\n\nTabulator.prototype.navigateUp = function () {\n\tvar cell = false;\n\n\tif (this.modExists(\"edit\", true)) {\n\t\tcell = this.modules.edit.currentCell;\n\n\t\tif (cell) {\n\t\t\te.preventDefault();\n\t\t\treturn cell.nav().up();\n\t\t}\n\t}\n\n\treturn false;\n};\n\nTabulator.prototype.navigateDown = function () {\n\tvar cell = false;\n\n\tif (this.modExists(\"edit\", true)) {\n\t\tcell = this.modules.edit.currentCell;\n\n\t\tif (cell) {\n\t\t\te.preventDefault();\n\t\t\treturn cell.nav().down();\n\t\t}\n\t}\n\n\treturn false;\n};\n\n/////////////// History Management //////////////\nTabulator.prototype.undo = function () {\n\tif (this.options.history && this.modExists(\"history\", true)) {\n\t\treturn this.modules.history.undo();\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.redo = function () {\n\tif (this.options.history && this.modExists(\"history\", true)) {\n\t\treturn this.modules.history.redo();\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.getHistoryUndoSize = function () {\n\tif (this.options.history && this.modExists(\"history\", true)) {\n\t\treturn this.modules.history.getHistoryUndoSize();\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.getHistoryRedoSize = function () {\n\tif (this.options.history && this.modExists(\"history\", true)) {\n\t\treturn this.modules.history.getHistoryRedoSize();\n\t} else {\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.clearHistory = function () {\n\tif (this.options.history && this.modExists(\"history\", true)) {\n\t\treturn this.modules.history.clear();\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/////////////// Download Management //////////////\n\nTabulator.prototype.download = function (type, filename, options, active) {\n\tif (this.modExists(\"download\", true)) {\n\t\tthis.modules.download.download(type, filename, options, active);\n\t}\n};\n\nTabulator.prototype.downloadToTab = function (type, filename, options, active) {\n\tif (this.modExists(\"download\", true)) {\n\t\tthis.modules.download.download(type, filename, options, active, true);\n\t}\n};\n\n/////////// Inter Table Communications ///////////\n\nTabulator.prototype.tableComms = function (table, module, action, data) {\n\tthis.modules.comms.receive(table, module, action, data);\n};\n\n////////////// Extension Management //////////////\n\n//object to hold module\nTabulator.prototype.moduleBindings = {};\n\n//extend module\nTabulator.prototype.extendModule = function (name, property, values) {\n\n\tif (Tabulator.prototype.moduleBindings[name]) {\n\t\tvar source = Tabulator.prototype.moduleBindings[name].prototype[property];\n\n\t\tif (source) {\n\t\t\tif ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == \"object\") {\n\t\t\t\tfor (var key in values) {\n\t\t\t\t\tsource[key] = values[key];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Module Error - Invalid value type, it must be an object\");\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Module Error - property does not exist:\", property);\n\t\t}\n\t} else {\n\t\tconsole.warn(\"Module Error - module does not exist:\", name);\n\t}\n};\n\n//add module to tabulator\nTabulator.prototype.registerModule = function (name, module) {\n\tvar self = this;\n\tTabulator.prototype.moduleBindings[name] = module;\n};\n\n//ensure that module are bound to instantiated function\nTabulator.prototype.bindModules = function () {\n\tthis.modules = {};\n\n\tfor (var name in Tabulator.prototype.moduleBindings) {\n\t\tthis.modules[name] = new Tabulator.prototype.moduleBindings[name](this);\n\t}\n};\n\n//Check for module\nTabulator.prototype.modExists = function (plugin, required) {\n\tif (this.modules[plugin]) {\n\t\treturn true;\n\t} else {\n\t\tif (required) {\n\t\t\tconsole.error(\"Tabulator Module Not Installed: \" + plugin);\n\t\t}\n\t\treturn false;\n\t}\n};\n\nTabulator.prototype.helpers = {\n\n\telVisible: function elVisible(el) {\n\t\treturn !(el.offsetWidth <= 0 && el.offsetHeight <= 0);\n\t},\n\n\telOffset: function elOffset(el) {\n\t\tvar box = el.getBoundingClientRect();\n\n\t\treturn {\n\t\t\ttop: box.top + window.pageYOffset - document.documentElement.clientTop,\n\t\t\tleft: box.left + window.pageXOffset - document.documentElement.clientLeft\n\t\t};\n\t},\n\n\tdeepClone: function deepClone(obj) {\n\t\tvar clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);\n\n\t\tfor (var i in obj) {\n\t\t\tif (obj[i] != null && _typeof(obj[i]) === \"object\") {\n\t\t\t\tif (obj[i] instanceof Date) {\n\t\t\t\t\tclone[i] = new Date(obj[i]);\n\t\t\t\t} else {\n\t\t\t\t\tclone[i] = this.deepClone(obj[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn clone;\n\t}\n};\n\nTabulator.prototype.comms = {\n\ttables: [],\n\tregister: function register(table) {\n\t\tTabulator.prototype.comms.tables.push(table);\n\t},\n\tderegister: function deregister(table) {\n\t\tvar index = Tabulator.prototype.comms.tables.indexOf(table);\n\n\t\tif (index > -1) {\n\t\t\tTabulator.prototype.comms.tables.splice(index, 1);\n\t\t}\n\t},\n\tlookupTable: function lookupTable(query, silent) {\n\t\tvar results = [],\n\t\t matches,\n\t\t match;\n\n\t\tif (typeof query === \"string\") {\n\t\t\tmatches = document.querySelectorAll(query);\n\n\t\t\tif (matches.length) {\n\t\t\t\tfor (var i = 0; i < matches.length; i++) {\n\t\t\t\t\tmatch = Tabulator.prototype.comms.matchElement(matches[i]);\n\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tresults.push(match);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof HTMLElement !== \"undefined\" && query instanceof HTMLElement || query instanceof Tabulator) {\n\t\t\tmatch = Tabulator.prototype.comms.matchElement(query);\n\n\t\t\tif (match) {\n\t\t\t\tresults.push(match);\n\t\t\t}\n\t\t} else if (Array.isArray(query)) {\n\t\t\tquery.forEach(function (item) {\n\t\t\t\tresults = results.concat(Tabulator.prototype.comms.lookupTable(item));\n\t\t\t});\n\t\t} else {\n\t\t\tif (!silent) {\n\t\t\t\tconsole.warn(\"Table Connection Error - Invalid Selector\", query);\n\t\t\t}\n\t\t}\n\n\t\treturn results;\n\t},\n\tmatchElement: function matchElement(element) {\n\t\treturn Tabulator.prototype.comms.tables.find(function (table) {\n\t\t\treturn element instanceof Tabulator ? table === element : table.element === element;\n\t\t});\n\t}\n};\n\nTabulator.prototype.findTable = function (query) {\n\tvar results = Tabulator.prototype.comms.lookupTable(query, true);\n\treturn Array.isArray(results) && !results.length ? false : results;\n};\n\nvar Layout = function Layout(table) {\n\n\tthis.table = table;\n\n\tthis.mode = null;\n};\n\n//initialize layout system\n\nLayout.prototype.initialize = function (layout) {\n\n\tif (this.modes[layout]) {\n\n\t\tthis.mode = layout;\n\t} else {\n\n\t\tconsole.warn(\"Layout Error - invalid mode set, defaulting to 'fitData' : \" + layout);\n\n\t\tthis.mode = 'fitData';\n\t}\n\n\tthis.table.element.setAttribute(\"tabulator-layout\", this.mode);\n};\n\nLayout.prototype.getMode = function () {\n\n\treturn this.mode;\n};\n\n//trigger table layout\n\nLayout.prototype.layout = function () {\n\n\tthis.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);\n\n\tif (this.mode.indexOf(\"fitData\") === 0 && this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.columns) {\n\n\t\tthis.table.modules.persistence.save(\"columns\");\n\t}\n};\n\n//layout render functions\n\nLayout.prototype.modes = {\n\n\t//resize columns to fit data they contain\n\n\t\"fitData\": function fitData(columns) {\n\n\t\tif (this.table.options.virtualDomHoz) {\n\n\t\t\tthis.table.vdomHoz.fitDataLayoutOverride();\n\t\t} else {\n\n\t\t\tcolumns.forEach(function (column) {\n\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t});\n\t\t}\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t},\n\n\t//resize columns to fit data they contain and stretch row to fill table\n\n\t\"fitDataFill\": function fitDataFill(columns) {\n\n\t\tcolumns.forEach(function (column) {\n\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t},\n\n\t//resize columns to fit data they contain\n\n\t\"fitDataTable\": function fitDataTable(columns) {\n\n\t\tcolumns.forEach(function (column) {\n\n\t\t\tcolumn.reinitializeWidth();\n\t\t});\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\t},\n\n\t//resize columns to fit data the contain and stretch last column to fill table\n\n\t\"fitDataStretch\": function fitDataStretch(columns) {\n\t\tvar _this41 = this;\n\n\t\tvar colsWidth = 0,\n\t\t tableWidth = this.table.rowManager.element.clientWidth,\n\t\t gap = 0,\n\t\t lastCol = false;\n\n\t\tcolumns.forEach(function (column, i) {\n\n\t\t\tif (!column.widthFixed) {\n\n\t\t\t\tcolumn.reinitializeWidth();\n\t\t\t}\n\n\t\t\tif (_this41.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible) {\n\n\t\t\t\tlastCol = column;\n\t\t\t}\n\n\t\t\tif (column.visible) {\n\n\t\t\t\tcolsWidth += column.getWidth();\n\t\t\t}\n\t\t});\n\n\t\tif (lastCol) {\n\n\t\t\tgap = tableWidth - colsWidth + lastCol.getWidth();\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tlastCol.setWidth(0);\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\n\t\t\tif (gap > 0) {\n\n\t\t\t\tlastCol.setWidth(gap);\n\t\t\t} else {\n\n\t\t\t\tlastCol.reinitializeWidth();\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t\t}\n\t\t}\n\t},\n\n\t//resize columns to fit\n\n\t\"fitColumns\": function fitColumns(columns) {\n\n\t\tvar self = this;\n\n\t\tvar totalWidth = self.table.element.clientWidth; //table element width\n\n\t\tvar fixedWidth = 0; //total width of columns with a defined width\n\n\t\tvar flexWidth = 0; //total width available to flexible columns\n\n\t\tvar flexGrowUnits = 0; //total number of widthGrow blocks accross all columns\n\n\t\tvar flexColWidth = 0; //desired width of flexible columns\n\n\t\tvar flexColumns = []; //array of flexible width columns\n\n\t\tvar fixedShrinkColumns = []; //array of fixed width columns that can shrink\n\n\t\tvar flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns\n\n\t\tvar overflowWidth = 0; //horizontal overflow width\n\n\t\tvar gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps\n\n\n\t\tfunction calcWidth(width) {\n\n\t\t\tvar colWidth;\n\n\t\t\tif (typeof width == \"string\") {\n\n\t\t\t\tif (width.indexOf(\"%\") > -1) {\n\n\t\t\t\t\tcolWidth = totalWidth / 100 * parseInt(width);\n\t\t\t\t} else {\n\n\t\t\t\t\tcolWidth = parseInt(width);\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\tcolWidth = width;\n\t\t\t}\n\n\t\t\treturn colWidth;\n\t\t}\n\n\t\t//ensure columns resize to take up the correct amount of space\n\n\t\tfunction scaleColumns(columns, freeSpace, colWidth, shrinkCols) {\n\n\t\t\tvar oversizeCols = [],\n\t\t\t oversizeSpace = 0,\n\t\t\t remainingSpace = 0,\n\t\t\t nextColWidth = 0,\n\t\t\t remainingFlexGrowUnits = flexGrowUnits,\n\t\t\t gap = 0,\n\t\t\t changeUnits = 0,\n\t\t\t undersizeCols = [];\n\n\t\t\tfunction calcGrow(col) {\n\n\t\t\t\treturn colWidth * (col.column.definition.widthGrow || 1);\n\t\t\t}\n\n\t\t\tfunction calcShrink(col) {\n\n\t\t\t\treturn calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);\n\t\t\t}\n\n\t\t\tcolumns.forEach(function (col, i) {\n\n\t\t\t\tvar width = shrinkCols ? calcShrink(col) : calcGrow(col);\n\n\t\t\t\tif (col.column.minWidth >= width) {\n\n\t\t\t\t\toversizeCols.push(col);\n\t\t\t\t} else {\n\n\t\t\t\t\tif (col.column.maxWidth && col.column.maxWidth < width) {\n\n\t\t\t\t\t\tcol.width = col.column.maxWidth;\n\n\t\t\t\t\t\tfreeSpace -= col.column.maxWidth;\n\n\t\t\t\t\t\tremainingFlexGrowUnits -= shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;\n\n\t\t\t\t\t\tif (remainingFlexGrowUnits) {\n\n\t\t\t\t\t\t\tcolWidth = Math.floor(freeSpace / remainingFlexGrowUnits);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tundersizeCols.push(col);\n\n\t\t\t\t\t\tchangeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (oversizeCols.length) {\n\n\t\t\t\toversizeCols.forEach(function (col) {\n\n\t\t\t\t\toversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;\n\n\t\t\t\t\tcol.width = col.column.minWidth;\n\t\t\t\t});\n\n\t\t\t\tremainingSpace = freeSpace - oversizeSpace;\n\n\t\t\t\tnextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;\n\n\t\t\t\tgap = remainingSpace - nextColWidth * changeUnits;\n\n\t\t\t\tgap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);\n\t\t\t} else {\n\n\t\t\t\tgap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;\n\n\t\t\t\tundersizeCols.forEach(function (column) {\n\n\t\t\t\t\tcolumn.width = shrinkCols ? calcShrink(column) : calcGrow(column);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn gap;\n\t\t}\n\n\t\tif (this.table.options.responsiveLayout && this.table.modExists(\"responsiveLayout\", true)) {\n\n\t\t\tthis.table.modules.responsiveLayout.update();\n\t\t}\n\n\t\t//adjust for vertical scrollbar if present\n\n\t\tif (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {\n\n\t\t\ttotalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;\n\t\t}\n\n\t\tcolumns.forEach(function (column) {\n\n\t\t\tvar width, minWidth, colWidth;\n\n\t\t\tif (column.visible) {\n\n\t\t\t\twidth = column.definition.width;\n\n\t\t\t\tminWidth = parseInt(column.minWidth);\n\n\t\t\t\tif (width) {\n\n\t\t\t\t\tcolWidth = calcWidth(width);\n\n\t\t\t\t\tfixedWidth += colWidth > minWidth ? colWidth : minWidth;\n\n\t\t\t\t\tif (column.definition.widthShrink) {\n\n\t\t\t\t\t\tfixedShrinkColumns.push({\n\n\t\t\t\t\t\t\tcolumn: column,\n\n\t\t\t\t\t\t\twidth: colWidth > minWidth ? colWidth : minWidth\n\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tflexShrinkUnits += column.definition.widthShrink;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tflexColumns.push({\n\n\t\t\t\t\t\tcolumn: column,\n\n\t\t\t\t\t\twidth: 0\n\n\t\t\t\t\t});\n\n\t\t\t\t\tflexGrowUnits += column.definition.widthGrow || 1;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t//calculate available space\n\n\t\tflexWidth = totalWidth - fixedWidth;\n\n\t\t//calculate correct column size\n\n\t\tflexColWidth = Math.floor(flexWidth / flexGrowUnits);\n\n\t\t//generate column widths\n\n\t\tvar gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);\n\n\t\t//increase width of last column to account for rounding errors\n\n\t\tif (flexColumns.length && gapFill > 0) {\n\n\t\t\tflexColumns[flexColumns.length - 1].width += +gapFill;\n\t\t}\n\n\t\t//caculate space for columns to be shrunk into\n\n\t\tflexColumns.forEach(function (col) {\n\n\t\t\tflexWidth -= col.width;\n\t\t});\n\n\t\toverflowWidth = Math.abs(gapFill) + flexWidth;\n\n\t\t//shrink oversize columns if there is no available space\n\n\t\tif (overflowWidth > 0 && flexShrinkUnits) {\n\n\t\t\tgapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);\n\t\t}\n\n\t\t//decrease width of last column to account for rounding errors\n\n\t\tif (fixedShrinkColumns.length) {\n\n\t\t\tfixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;\n\t\t}\n\n\t\tflexColumns.forEach(function (col) {\n\n\t\t\tcol.column.setWidth(col.width);\n\t\t});\n\n\t\tfixedShrinkColumns.forEach(function (col) {\n\n\t\t\tcol.column.setWidth(col.width);\n\t\t});\n\t}\n\n};\n\nTabulator.prototype.registerModule(\"layout\", Layout);\nvar Localize = function Localize(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.locale = \"default\"; //current locale\n\tthis.lang = false; //current language\n\tthis.bindings = {}; //update events to call when locale is changed\n\tthis.langList = {};\n};\n\nLocalize.prototype.initialize = function () {\n\tthis.langList = Tabulator.prototype.helpers.deepClone(this.langs);\n};\n\n//set header placehoder\nLocalize.prototype.setHeaderFilterPlaceholder = function (placeholder) {\n\tthis.langList.default.headerFilters.default = placeholder;\n};\n\n//set header filter placeholder by column\nLocalize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {\n\tthis.langList.default.headerFilters.columns[column] = placeholder;\n\n\tif (this.lang && !this.lang.headerFilters.columns[column]) {\n\t\tthis.lang.headerFilters.columns[column] = placeholder;\n\t}\n};\n\n//setup a lang description object\nLocalize.prototype.installLang = function (locale, lang) {\n\tif (this.langList[locale]) {\n\t\tthis._setLangProp(this.langList[locale], lang);\n\t} else {\n\t\tthis.langList[locale] = lang;\n\t}\n};\n\nLocalize.prototype._setLangProp = function (lang, values) {\n\tfor (var key in values) {\n\t\tif (lang[key] && _typeof(lang[key]) == \"object\") {\n\t\t\tthis._setLangProp(lang[key], values[key]);\n\t\t} else {\n\t\t\tlang[key] = values[key];\n\t\t}\n\t}\n};\n\n//set current locale\nLocalize.prototype.setLocale = function (desiredLocale) {\n\tvar self = this;\n\n\tdesiredLocale = desiredLocale || \"default\";\n\n\t//fill in any matching languge values\n\tfunction traverseLang(trans, path) {\n\t\tfor (var prop in trans) {\n\t\t\tif (_typeof(trans[prop]) == \"object\") {\n\t\t\t\tif (!path[prop]) {\n\t\t\t\t\tpath[prop] = {};\n\t\t\t\t}\n\t\t\t\ttraverseLang(trans[prop], path[prop]);\n\t\t\t} else {\n\t\t\t\tpath[prop] = trans[prop];\n\t\t\t}\n\t\t}\n\t}\n\n\t//determing correct locale to load\n\tif (desiredLocale === true && navigator.language) {\n\t\t//get local from system\n\t\tdesiredLocale = navigator.language.toLowerCase();\n\t}\n\n\tif (desiredLocale) {\n\n\t\t//if locale is not set, check for matching top level locale else use default\n\t\tif (!self.langList[desiredLocale]) {\n\t\t\tvar prefix = desiredLocale.split(\"-\")[0];\n\n\t\t\tif (self.langList[prefix]) {\n\t\t\t\tconsole.warn(\"Localization Error - Exact matching locale not found, using closest match: \", desiredLocale, prefix);\n\t\t\t\tdesiredLocale = prefix;\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Localization Error - Matching locale not found, using default: \", desiredLocale);\n\t\t\t\tdesiredLocale = \"default\";\n\t\t\t}\n\t\t}\n\t}\n\n\tself.locale = desiredLocale;\n\n\t//load default lang template\n\tself.lang = Tabulator.prototype.helpers.deepClone(self.langList.default || {});\n\n\tif (desiredLocale != \"default\") {\n\t\ttraverseLang(self.langList[desiredLocale], self.lang);\n\t}\n\n\tself.table.options.localized.call(self.table, self.locale, self.lang);\n\n\tself._executeBindings();\n};\n\n//get current locale\nLocalize.prototype.getLocale = function (locale) {\n\treturn self.locale;\n};\n\n//get lang object for given local or current if none provided\nLocalize.prototype.getLang = function (locale) {\n\treturn locale ? this.langList[locale] : this.lang;\n};\n\n//get text for current locale\nLocalize.prototype.getText = function (path, value) {\n\tvar path = value ? path + \"|\" + value : path,\n\t pathArray = path.split(\"|\"),\n\t text = this._getLangElement(pathArray, this.locale);\n\n\t// if(text === false){\n\t// \tconsole.warn(\"Localization Error - Matching localized text not found for given path: \", path);\n\t// }\n\n\treturn text || \"\";\n};\n\n//traverse langs object and find localized copy\nLocalize.prototype._getLangElement = function (path, locale) {\n\tvar self = this;\n\tvar root = self.lang;\n\n\tpath.forEach(function (level) {\n\t\tvar rootPath;\n\n\t\tif (root) {\n\t\t\trootPath = root[level];\n\n\t\t\tif (typeof rootPath != \"undefined\") {\n\t\t\t\troot = rootPath;\n\t\t\t} else {\n\t\t\t\troot = false;\n\t\t\t}\n\t\t}\n\t});\n\n\treturn root;\n};\n\n//set update binding\nLocalize.prototype.bind = function (path, callback) {\n\tif (!this.bindings[path]) {\n\t\tthis.bindings[path] = [];\n\t}\n\n\tthis.bindings[path].push(callback);\n\n\tcallback(this.getText(path), this.lang);\n};\n\n//itterate through bindings and trigger updates\nLocalize.prototype._executeBindings = function () {\n\tvar self = this;\n\n\tvar _loop = function _loop(path) {\n\t\tself.bindings[path].forEach(function (binding) {\n\t\t\tbinding(self.getText(path), self.lang);\n\t\t});\n\t};\n\n\tfor (var path in self.bindings) {\n\t\t_loop(path);\n\t}\n};\n\n//Localized text listings\nLocalize.prototype.langs = {\n\t\"default\": { //hold default locale text\n\t\t\"groups\": {\n\t\t\t\"item\": \"item\",\n\t\t\t\"items\": \"items\"\n\t\t},\n\t\t\"columns\": {},\n\t\t\"ajax\": {\n\t\t\t\"loading\": \"Loading\",\n\t\t\t\"error\": \"Error\"\n\t\t},\n\t\t\"pagination\": {\n\t\t\t\"page_size\": \"Page Size\",\n\t\t\t\"page_title\": \"Show Page\",\n\t\t\t\"first\": \"First\",\n\t\t\t\"first_title\": \"First Page\",\n\t\t\t\"last\": \"Last\",\n\t\t\t\"last_title\": \"Last Page\",\n\t\t\t\"prev\": \"Prev\",\n\t\t\t\"prev_title\": \"Prev Page\",\n\t\t\t\"next\": \"Next\",\n\t\t\t\"next_title\": \"Next Page\",\n\t\t\t\"all\": \"All\"\n\t\t},\n\t\t\"headerFilters\": {\n\t\t\t\"default\": \"filter column...\",\n\t\t\t\"columns\": {}\n\t\t}\n\t}\n};\n\nTabulator.prototype.registerModule(\"localize\", Localize);\nvar Comms = function Comms(table) {\n\tthis.table = table;\n};\n\nComms.prototype.getConnections = function (selectors) {\n\tvar self = this,\n\t connections = [],\n\t connection;\n\n\tconnection = Tabulator.prototype.comms.lookupTable(selectors);\n\n\tconnection.forEach(function (con) {\n\t\tif (self.table !== con) {\n\t\t\tconnections.push(con);\n\t\t}\n\t});\n\n\treturn connections;\n};\n\nComms.prototype.send = function (selectors, module, action, data) {\n\tvar self = this,\n\t connections = this.getConnections(selectors);\n\n\tconnections.forEach(function (connection) {\n\t\tconnection.tableComms(self.table.element, module, action, data);\n\t});\n\n\tif (!connections.length && selectors) {\n\t\tconsole.warn(\"Table Connection Error - No tables matching selector found\", selectors);\n\t}\n};\n\nComms.prototype.receive = function (table, module, action, data) {\n\tif (this.table.modExists(module)) {\n\t\treturn this.table.modules[module].commsReceived(table, action, data);\n\t} else {\n\t\tconsole.warn(\"Inter-table Comms Error - no such module:\", module);\n\t}\n};\n\nTabulator.prototype.registerModule(\"comms\", Comms);\n\nvar Accessor = function Accessor(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.allowedTypes = [\"\", \"data\", \"download\", \"clipboard\", \"print\", \"htmlOutput\"]; //list of accessor types\n};\n\n//initialize column accessor\nAccessor.prototype.initializeColumn = function (column) {\n\tvar self = this,\n\t match = false,\n\t config = {};\n\n\tthis.allowedTypes.forEach(function (type) {\n\t\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t accessor;\n\n\t\tif (column.definition[key]) {\n\t\t\taccessor = self.lookupAccessor(column.definition[key]);\n\n\t\t\tif (accessor) {\n\t\t\t\tmatch = true;\n\n\t\t\t\tconfig[key] = {\n\t\t\t\t\taccessor: accessor,\n\t\t\t\t\tparams: column.definition[key + \"Params\"] || {}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t});\n\n\tif (match) {\n\t\tcolumn.modules.accessor = config;\n\t}\n};\n\nAccessor.prototype.lookupAccessor = function (value) {\n\tvar accessor = false;\n\n\t//set column accessor\n\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\tcase \"string\":\n\t\t\tif (this.accessors[value]) {\n\t\t\t\taccessor = this.accessors[value];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Accessor Error - No such accessor found, ignoring: \", value);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\taccessor = value;\n\t\t\tbreak;\n\t}\n\n\treturn accessor;\n};\n\n//apply accessor to row\nAccessor.prototype.transformRow = function (row, type) {\n\tvar key = \"accessor\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t rowComponent = row.getComponent();\n\n\t//clone data object with deep copy to isolate internal data from returned result\n\tvar data = Tabulator.prototype.helpers.deepClone(row.data || {});\n\n\tthis.table.columnManager.traverse(function (column) {\n\t\tvar value, accessor, params, colCompnent;\n\n\t\tif (column.modules.accessor) {\n\n\t\t\taccessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;\n\n\t\t\tif (accessor) {\n\t\t\t\tvalue = column.getFieldValue(data);\n\n\t\t\t\tif (value != \"undefined\") {\n\t\t\t\t\tcolCompnent = column.getComponent();\n\t\t\t\t\tparams = typeof accessor.params === \"function\" ? accessor.params(value, data, type, colCompnent, rowComponent) : accessor.params;\n\t\t\t\t\tcolumn.setFieldValue(data, accessor.accessor(value, data, type, params, colCompnent, rowComponent));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn data;\n},\n\n//default accessors\nAccessor.prototype.accessors = {};\n\nTabulator.prototype.registerModule(\"accessor\", Accessor);\nvar Ajax = function Ajax(table) {\n\n\tthis.table = table; //hold Tabulator object\n\tthis.config = false; //hold config object for ajax request\n\tthis.url = \"\"; //request URL\n\tthis.urlGenerator = false;\n\tthis.params = false; //request parameters\n\n\tthis.loaderElement = this.createLoaderElement(); //loader message div\n\tthis.msgElement = this.createMsgElement(); //message element\n\tthis.loadingElement = false;\n\tthis.errorElement = false;\n\tthis.loaderPromise = false;\n\n\tthis.progressiveLoad = false;\n\tthis.loading = false;\n\n\tthis.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request\n};\n\n//initialize setup options\nAjax.prototype.initialize = function () {\n\tvar template;\n\n\tthis.loaderElement.appendChild(this.msgElement);\n\n\tif (this.table.options.ajaxLoaderLoading) {\n\t\tif (typeof this.table.options.ajaxLoaderLoading == \"string\") {\n\t\t\ttemplate = document.createElement('template');\n\t\t\ttemplate.innerHTML = this.table.options.ajaxLoaderLoading.trim();\n\t\t\tthis.loadingElement = template.content.firstChild;\n\t\t} else {\n\t\t\tthis.loadingElement = this.table.options.ajaxLoaderLoading;\n\t\t}\n\t}\n\n\tthis.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;\n\n\tthis.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;\n\n\tif (this.table.options.ajaxLoaderError) {\n\t\tif (typeof this.table.options.ajaxLoaderError == \"string\") {\n\t\t\ttemplate = document.createElement('template');\n\t\t\ttemplate.innerHTML = this.table.options.ajaxLoaderError.trim();\n\t\t\tthis.errorElement = template.content.firstChild;\n\t\t} else {\n\t\t\tthis.errorElement = this.table.options.ajaxLoaderError;\n\t\t}\n\t}\n\n\tif (this.table.options.ajaxParams) {\n\t\tthis.setParams(this.table.options.ajaxParams);\n\t}\n\n\tif (this.table.options.ajaxConfig) {\n\t\tthis.setConfig(this.table.options.ajaxConfig);\n\t}\n\n\tif (this.table.options.ajaxURL) {\n\t\tthis.setUrl(this.table.options.ajaxURL);\n\t}\n\n\tif (this.table.options.ajaxProgressiveLoad) {\n\t\tif (this.table.options.pagination) {\n\t\t\tthis.progressiveLoad = false;\n\t\t\tconsole.error(\"Progressive Load Error - Pagination and progressive load cannot be used at the same time\");\n\t\t} else {\n\t\t\tif (this.table.modExists(\"page\")) {\n\t\t\t\tthis.progressiveLoad = this.table.options.ajaxProgressiveLoad;\n\t\t\t\tthis.table.modules.page.initializeProgressive(this.progressiveLoad);\n\t\t\t} else {\n\t\t\t\tconsole.error(\"Pagination plugin is required for progressive ajax loading\");\n\t\t\t}\n\t\t}\n\t}\n};\n\nAjax.prototype.createLoaderElement = function () {\n\tvar el = document.createElement(\"div\");\n\tel.classList.add(\"tabulator-loader\");\n\treturn el;\n};\n\nAjax.prototype.createMsgElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-loader-msg\");\n\tel.setAttribute(\"role\", \"alert\");\n\n\treturn el;\n};\n\n//set ajax params\nAjax.prototype.setParams = function (params, update) {\n\tif (update) {\n\t\tthis.params = this.params || {};\n\n\t\tfor (var key in params) {\n\t\t\tthis.params[key] = params[key];\n\t\t}\n\t} else {\n\t\tthis.params = params;\n\t}\n};\n\nAjax.prototype.getParams = function () {\n\treturn this.params || {};\n};\n\n//load config object\nAjax.prototype.setConfig = function (config) {\n\tthis._loadDefaultConfig();\n\n\tif (typeof config == \"string\") {\n\t\tthis.config.method = config;\n\t} else {\n\t\tfor (var key in config) {\n\t\t\tthis.config[key] = config[key];\n\t\t}\n\t}\n};\n\n//create config object from default\nAjax.prototype._loadDefaultConfig = function (force) {\n\tvar self = this;\n\tif (!self.config || force) {\n\n\t\tself.config = {};\n\n\t\t//load base config from defaults\n\t\tfor (var key in self.defaultConfig) {\n\t\t\tself.config[key] = self.defaultConfig[key];\n\t\t}\n\t}\n};\n\n//set request url\nAjax.prototype.setUrl = function (url) {\n\tthis.url = url;\n};\n\n//get request url\nAjax.prototype.getUrl = function () {\n\treturn this.url;\n};\n\n//lstandard loading function\nAjax.prototype.loadData = function (inPosition, columnsChanged) {\n\tvar self = this;\n\n\tif (this.progressiveLoad) {\n\t\treturn this._loadDataProgressive();\n\t} else {\n\t\treturn this._loadDataStandard(inPosition, columnsChanged);\n\t}\n};\n\nAjax.prototype.nextPage = function (diff) {\n\tvar margin;\n\n\tif (!this.loading) {\n\n\t\tmargin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;\n\n\t\tif (diff < margin) {\n\t\t\tthis.table.modules.page.nextPage().then(function () {}).catch(function () {});\n\t\t}\n\t}\n};\n\nAjax.prototype.blockActiveRequest = function () {\n\tthis.requestOrder++;\n};\n\nAjax.prototype._loadDataProgressive = function () {\n\tthis.table.rowManager.setData([]);\n\treturn this.table.modules.page.setPage(1);\n};\n\nAjax.prototype._loadDataStandard = function (inPosition, columnsChanged) {\n\tvar _this42 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\t_this42.sendRequest(inPosition).then(function (data) {\n\t\t\t_this42.table.rowManager.setData(data, inPosition, columnsChanged).then(function () {\n\t\t\t\tresolve();\n\t\t\t}).catch(function (e) {\n\t\t\t\treject(e);\n\t\t\t});\n\t\t}).catch(function (e) {\n\t\t\treject(e);\n\t\t});\n\t});\n};\n\nAjax.prototype.generateParamsList = function (data, prefix) {\n\tvar self = this,\n\t output = [];\n\n\tprefix = prefix || \"\";\n\n\tif (Array.isArray(data)) {\n\t\tdata.forEach(function (item, i) {\n\t\t\toutput = output.concat(self.generateParamsList(item, prefix ? prefix + \"[\" + i + \"]\" : i));\n\t\t});\n\t} else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === \"object\") {\n\t\tfor (var key in data) {\n\t\t\toutput = output.concat(self.generateParamsList(data[key], prefix ? prefix + \"[\" + key + \"]\" : key));\n\t\t}\n\t} else {\n\t\toutput.push({ key: prefix, value: data });\n\t}\n\n\treturn output;\n};\n\nAjax.prototype.serializeParams = function (params) {\n\tvar output = this.generateParamsList(params),\n\t encoded = [];\n\n\toutput.forEach(function (item) {\n\t\tencoded.push(encodeURIComponent(item.key) + \"=\" + encodeURIComponent(item.value));\n\t});\n\n\treturn encoded.join(\"&\");\n};\n\n//send ajax request\nAjax.prototype.sendRequest = function (silent) {\n\tvar _this43 = this;\n\n\tvar self = this,\n\t url = self.url,\n\t requestNo,\n\t esc,\n\t query;\n\n\tself.requestOrder++;\n\trequestNo = self.requestOrder;\n\n\tself._loadDefaultConfig();\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (self.table.options.ajaxRequesting.call(_this43.table, self.url, self.params) !== false) {\n\n\t\t\tself.loading = true;\n\n\t\t\tif (!silent) {\n\t\t\t\tself.showLoader();\n\t\t\t}\n\n\t\t\t_this43.loaderPromise(url, self.config, self.params).then(function (data) {\n\t\t\t\tif (requestNo === self.requestOrder) {\n\t\t\t\t\tif (self.table.options.ajaxResponse) {\n\t\t\t\t\t\tdata = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);\n\t\t\t\t\t}\n\t\t\t\t\tresolve(data);\n\n\t\t\t\t\tself.hideLoader();\n\t\t\t\t\tself.loading = false;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made\");\n\t\t\t\t}\n\t\t\t}).catch(function (error) {\n\t\t\t\tconsole.error(\"Ajax Load Error: \", error);\n\t\t\t\tself.table.options.ajaxError.call(self.table, error);\n\n\t\t\t\tself.showError();\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tself.hideLoader();\n\t\t\t\t}, 3000);\n\n\t\t\t\tself.loading = false;\n\n\t\t\t\treject(error);\n\t\t\t});\n\t\t} else {\n\t\t\treject();\n\t\t}\n\t});\n};\n\nAjax.prototype.showLoader = function () {\n\tvar shouldLoad = typeof this.table.options.ajaxLoader === \"function\" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;\n\n\tif (shouldLoad) {\n\n\t\tthis.hideLoader();\n\n\t\twhile (this.msgElement.firstChild) {\n\t\t\tthis.msgElement.removeChild(this.msgElement.firstChild);\n\t\t}this.msgElement.classList.remove(\"tabulator-error\");\n\t\tthis.msgElement.classList.add(\"tabulator-loading\");\n\n\t\tif (this.loadingElement) {\n\t\t\tthis.msgElement.appendChild(this.loadingElement);\n\t\t} else {\n\t\t\tthis.msgElement.innerHTML = this.table.modules.localize.getText(\"ajax|loading\");\n\t\t}\n\n\t\tthis.table.element.appendChild(this.loaderElement);\n\t}\n};\n\nAjax.prototype.showError = function () {\n\tthis.hideLoader();\n\n\twhile (this.msgElement.firstChild) {\n\t\tthis.msgElement.removeChild(this.msgElement.firstChild);\n\t}this.msgElement.classList.remove(\"tabulator-loading\");\n\tthis.msgElement.classList.add(\"tabulator-error\");\n\n\tif (this.errorElement) {\n\t\tthis.msgElement.appendChild(this.errorElement);\n\t} else {\n\t\tthis.msgElement.innerHTML = this.table.modules.localize.getText(\"ajax|error\");\n\t}\n\n\tthis.table.element.appendChild(this.loaderElement);\n};\n\nAjax.prototype.hideLoader = function () {\n\tif (this.loaderElement.parentNode) {\n\t\tthis.loaderElement.parentNode.removeChild(this.loaderElement);\n\t}\n};\n\n//default ajax config object\nAjax.prototype.defaultConfig = {\n\tmethod: \"GET\"\n};\n\nAjax.prototype.defaultURLGenerator = function (url, config, params) {\n\n\tif (url) {\n\t\tif (params && Object.keys(params).length) {\n\t\t\tif (!config.method || config.method.toLowerCase() == \"get\") {\n\t\t\t\tconfig.method = \"get\";\n\n\t\t\t\turl += (url.includes(\"?\") ? \"&\" : \"?\") + this.modules.ajax.serializeParams(params);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn url;\n};\n\nAjax.prototype.defaultLoaderPromise = function (url, config, params) {\n\tvar self = this,\n\t contentType;\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\t//set url\n\t\turl = self.urlGenerator.call(self.table, url, config, params);\n\n\t\t//set body content if not GET request\n\t\tif (config.method.toUpperCase() != \"GET\") {\n\t\t\tcontentType = _typeof(self.table.options.ajaxContentType) === \"object\" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];\n\t\t\tif (contentType) {\n\n\t\t\t\tfor (var key in contentType.headers) {\n\t\t\t\t\tif (!config.headers) {\n\t\t\t\t\t\tconfig.headers = {};\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof config.headers[key] === \"undefined\") {\n\t\t\t\t\t\tconfig.headers[key] = contentType.headers[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconfig.body = contentType.body.call(self, url, config, params);\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Ajax Error - Invalid ajaxContentType value:\", self.table.options.ajaxContentType);\n\t\t\t}\n\t\t}\n\n\t\tif (url) {\n\n\t\t\t//configure headers\n\t\t\tif (typeof config.headers === \"undefined\") {\n\t\t\t\tconfig.headers = {};\n\t\t\t}\n\n\t\t\tif (typeof config.headers.Accept === \"undefined\") {\n\t\t\t\tconfig.headers.Accept = \"application/json\";\n\t\t\t}\n\n\t\t\tif (typeof config.headers[\"X-Requested-With\"] === \"undefined\") {\n\t\t\t\tconfig.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n\t\t\t}\n\n\t\t\tif (typeof config.mode === \"undefined\") {\n\t\t\t\tconfig.mode = \"cors\";\n\t\t\t}\n\n\t\t\tif (config.mode == \"cors\") {\n\n\t\t\t\tif (typeof config.headers[\"Access-Control-Allow-Origin\"] === \"undefined\") {\n\t\t\t\t\tconfig.headers[\"Access-Control-Allow-Origin\"] = window.location.origin;\n\t\t\t\t}\n\n\t\t\t\tif (typeof config.credentials === \"undefined\") {\n\t\t\t\t\tconfig.credentials = 'same-origin';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (typeof config.credentials === \"undefined\") {\n\t\t\t\t\tconfig.credentials = 'include';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//send request\n\t\t\tfetch(url, config).then(function (response) {\n\t\t\t\tif (response.ok) {\n\t\t\t\t\tresponse.json().then(function (data) {\n\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t}).catch(function (error) {\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t\tconsole.warn(\"Ajax Load Error - Invalid JSON returned\", error);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \" + response.status, response.statusText);\n\t\t\t\t\treject(response);\n\t\t\t\t}\n\t\t\t}).catch(function (error) {\n\t\t\t\tconsole.error(\"Ajax Load Error - Connection Error: \", error);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Ajax Load Error - No URL Set\");\n\t\t\tresolve([]);\n\t\t}\n\t});\n};\n\nAjax.prototype.contentTypeFormatters = {\n\t\"json\": {\n\t\theaders: {\n\t\t\t'Content-Type': 'application/json'\n\t\t},\n\t\tbody: function body(url, config, params) {\n\t\t\treturn JSON.stringify(params);\n\t\t}\n\t},\n\t\"form\": {\n\t\theaders: {},\n\t\tbody: function body(url, config, params) {\n\t\t\tvar output = this.generateParamsList(params),\n\t\t\t form = new FormData();\n\n\t\t\toutput.forEach(function (item) {\n\t\t\t\tform.append(item.key, item.value);\n\t\t\t});\n\n\t\t\treturn form;\n\t\t}\n\t}\n};\n\nTabulator.prototype.registerModule(\"ajax\", Ajax);\n\n//public calc object\nvar CalcComponent = function CalcComponent(row) {\n\tthis._row = row;\n};\n\nCalcComponent.prototype.getData = function (transform) {\n\treturn this._row.getData(transform);\n};\n\nCalcComponent.prototype.getElement = function () {\n\treturn this._row.getElement();\n};\n\nCalcComponent.prototype.getTable = function () {\n\treturn this._row.table;\n};\n\nCalcComponent.prototype.getCells = function () {\n\tvar cells = [];\n\n\tthis._row.getCells().forEach(function (cell) {\n\t\tcells.push(cell.getComponent());\n\t});\n\n\treturn cells;\n};\n\nCalcComponent.prototype.getCell = function (column) {\n\tvar cell = this._row.getCell(column);\n\treturn cell ? cell.getComponent() : false;\n};\n\nCalcComponent.prototype._getSelf = function () {\n\treturn this._row;\n};\n\nvar ColumnCalcs = function ColumnCalcs(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.topCalcs = [];\n\tthis.botCalcs = [];\n\tthis.genColumn = false;\n\tthis.topElement = this.createElement();\n\tthis.botElement = this.createElement();\n\tthis.topRow = false;\n\tthis.botRow = false;\n\tthis.topInitialized = false;\n\tthis.botInitialized = false;\n\n\tthis.initialize();\n};\n\nColumnCalcs.prototype.createElement = function () {\n\tvar el = document.createElement(\"div\");\n\tel.classList.add(\"tabulator-calcs-holder\");\n\treturn el;\n};\n\nColumnCalcs.prototype.initialize = function () {\n\tthis.genColumn = new Column({ field: \"value\" }, this);\n};\n\n//dummy functions to handle being mock column manager\nColumnCalcs.prototype.registerColumnField = function () {};\n\n//initialize column calcs\nColumnCalcs.prototype.initializeColumn = function (column) {\n\tvar def = column.definition;\n\n\tvar config = {\n\t\ttopCalcParams: def.topCalcParams || {},\n\t\tbotCalcParams: def.bottomCalcParams || {}\n\t};\n\n\tif (def.topCalc) {\n\n\t\tswitch (_typeof(def.topCalc)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.calculations[def.topCalc]) {\n\t\t\t\t\tconfig.topCalc = this.calculations[def.topCalc];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.topCalc);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tconfig.topCalc = def.topCalc;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif (config.topCalc) {\n\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\tthis.topCalcs.push(column);\n\n\t\t\tif (this.table.options.columnCalcs != \"group\") {\n\t\t\t\tthis.initializeTopRow();\n\t\t\t}\n\t\t}\n\t}\n\n\tif (def.bottomCalc) {\n\t\tswitch (_typeof(def.bottomCalc)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (this.calculations[def.bottomCalc]) {\n\t\t\t\t\tconfig.botCalc = this.calculations[def.bottomCalc];\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Column Calc Error - No such calculation found, ignoring: \", def.bottomCalc);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tconfig.botCalc = def.bottomCalc;\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif (config.botCalc) {\n\t\t\tcolumn.modules.columnCalcs = config;\n\t\t\tthis.botCalcs.push(column);\n\n\t\t\tif (this.table.options.columnCalcs != \"group\") {\n\t\t\t\tthis.initializeBottomRow();\n\t\t\t}\n\t\t}\n\t}\n};\n\nColumnCalcs.prototype.removeCalcs = function () {\n\tvar changed = false;\n\n\tif (this.topInitialized) {\n\t\tthis.topInitialized = false;\n\t\tthis.topElement.parentNode.removeChild(this.topElement);\n\t\tchanged = true;\n\t}\n\n\tif (this.botInitialized) {\n\t\tthis.botInitialized = false;\n\t\tthis.table.footerManager.remove(this.botElement);\n\t\tchanged = true;\n\t}\n\n\tif (changed) {\n\t\tthis.table.rowManager.adjustTableSize();\n\t}\n};\n\nColumnCalcs.prototype.initializeTopRow = function () {\n\tif (!this.topInitialized) {\n\t\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n\t\tthis.topInitialized = true;\n\t}\n};\n\nColumnCalcs.prototype.initializeBottomRow = function () {\n\tif (!this.botInitialized) {\n\t\tthis.table.footerManager.prepend(this.botElement);\n\t\tthis.botInitialized = true;\n\t}\n};\n\nColumnCalcs.prototype.scrollHorizontal = function (left) {\n\tif (this.botInitialized && this.botRow) {\n\t\tthis.botRow.getElement().style.marginLeft = -left + \"px\";\n\t}\n};\n\nColumnCalcs.prototype.recalc = function (rows) {\n\tvar data, row;\n\n\tif (this.topInitialized || this.botInitialized) {\n\t\tdata = this.rowsToData(rows);\n\n\t\tif (this.topInitialized) {\n\t\t\tif (this.topRow) {\n\t\t\t\tthis.topRow.deleteCells();\n\t\t\t}\n\n\t\t\trow = this.generateRow(\"top\", this.rowsToData(rows));\n\t\t\tthis.topRow = row;\n\t\t\twhile (this.topElement.firstChild) {\n\t\t\t\tthis.topElement.removeChild(this.topElement.firstChild);\n\t\t\t}this.topElement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t}\n\n\t\tif (this.botInitialized) {\n\t\t\tif (this.botRow) {\n\t\t\t\tthis.botRow.deleteCells();\n\t\t\t}\n\n\t\t\trow = this.generateRow(\"bottom\", this.rowsToData(rows));\n\t\t\tthis.botRow = row;\n\t\t\twhile (this.botElement.firstChild) {\n\t\t\t\tthis.botElement.removeChild(this.botElement.firstChild);\n\t\t\t}this.botElement.appendChild(row.getElement());\n\t\t\trow.initialize(true);\n\t\t}\n\n\t\tthis.table.rowManager.adjustTableSize();\n\n\t\t//set resizable handles\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\t\t\tthis.table.modules.frozenColumns.layout();\n\t\t}\n\t}\n};\n\nColumnCalcs.prototype.recalcRowGroup = function (row) {\n\tthis.recalcGroup(this.table.modules.groupRows.getRowGroup(row));\n};\n\nColumnCalcs.prototype.recalcAll = function () {\n\tvar _this44 = this;\n\n\tif (this.topCalcs.length || this.botCalcs.length) {\n\t\tif (this.table.options.columnCalcs !== \"group\") {\n\t\t\tthis.recalc(this.table.rowManager.activeRows);\n\t\t}\n\n\t\tif (this.table.options.groupBy && this.table.options.columnCalcs !== \"table\") {\n\n\t\t\tvar groups = table.modules.groupRows.getChildGroups();\n\n\t\t\tgroups.forEach(function (group) {\n\t\t\t\t_this44.recalcGroup(group);\n\t\t\t});\n\t\t}\n\t}\n};\n\nColumnCalcs.prototype.recalcGroup = function (group) {\n\tvar data, rowData;\n\n\tif (group) {\n\t\tif (group.calcs) {\n\t\t\tif (group.calcs.bottom) {\n\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\trowData = this.generateRowData(\"bottom\", data);\n\n\t\t\t\tgroup.calcs.bottom.updateData(rowData);\n\t\t\t\tgroup.calcs.bottom.reinitialize();\n\t\t\t}\n\n\t\t\tif (group.calcs.top) {\n\t\t\t\tdata = this.rowsToData(group.rows);\n\t\t\t\trowData = this.generateRowData(\"top\", data);\n\n\t\t\t\tgroup.calcs.top.updateData(rowData);\n\t\t\t\tgroup.calcs.top.reinitialize();\n\t\t\t}\n\t\t}\n\t}\n};\n\n//generate top stats row\nColumnCalcs.prototype.generateTopRow = function (rows) {\n\treturn this.generateRow(\"top\", this.rowsToData(rows));\n};\n//generate bottom stats row\nColumnCalcs.prototype.generateBottomRow = function (rows) {\n\treturn this.generateRow(\"bottom\", this.rowsToData(rows));\n};\n\nColumnCalcs.prototype.rowsToData = function (rows) {\n\tvar _this45 = this;\n\n\tvar data = [];\n\n\trows.forEach(function (row) {\n\t\tdata.push(row.getData());\n\n\t\tif (_this45.table.options.dataTree && _this45.table.options.dataTreeChildColumnCalcs) {\n\t\t\tif (row.modules.dataTree.open) {\n\t\t\t\tvar children = _this45.rowsToData(_this45.table.modules.dataTree.getFilteredTreeChildren(row));\n\t\t\t\tdata = data.concat(children);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn data;\n};\n\n//generate stats row\nColumnCalcs.prototype.generateRow = function (pos, data) {\n\tvar self = this,\n\t rowData = this.generateRowData(pos, data),\n\t row;\n\n\tif (self.table.modExists(\"mutator\")) {\n\t\tself.table.modules.mutator.disable();\n\t}\n\n\trow = new Row(rowData, this, \"calc\");\n\n\tif (self.table.modExists(\"mutator\")) {\n\t\tself.table.modules.mutator.enable();\n\t}\n\n\trow.getElement().classList.add(\"tabulator-calcs\", \"tabulator-calcs-\" + pos);\n\n\trow.component = false;\n\n\trow.getComponent = function () {\n\t\tif (!this.component) {\n\t\t\tthis.component = new CalcComponent(this);\n\t\t}\n\n\t\treturn this.component;\n\t};\n\n\trow.generateCells = function () {\n\n\t\tvar cells = [];\n\n\t\tself.table.columnManager.columnsByIndex.forEach(function (column) {\n\n\t\t\t//set field name of mock column\n\t\t\tself.genColumn.setField(column.getField());\n\t\t\tself.genColumn.hozAlign = column.hozAlign;\n\n\t\t\tif (column.definition[pos + \"CalcFormatter\"] && self.table.modExists(\"format\")) {\n\t\t\t\tself.genColumn.modules.format = {\n\t\t\t\t\tformatter: self.table.modules.format.getFormatter(column.definition[pos + \"CalcFormatter\"]),\n\t\t\t\t\tparams: column.definition[pos + \"CalcFormatterParams\"] || {}\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tself.genColumn.modules.format = {\n\t\t\t\t\tformatter: self.table.modules.format.getFormatter(\"plaintext\"),\n\t\t\t\t\tparams: {}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t//ensure css class defintion is replicated to calculation cell\n\t\t\tself.genColumn.definition.cssClass = column.definition.cssClass;\n\n\t\t\t//generate cell and assign to correct column\n\t\t\tvar cell = new Cell(self.genColumn, row);\n\t\t\tcell.getElement();\n\t\t\tcell.column = column;\n\t\t\tcell.setWidth();\n\n\t\t\tcolumn.cells.push(cell);\n\t\t\tcells.push(cell);\n\n\t\t\tif (!column.visible) {\n\t\t\t\tcell.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis.cells = cells;\n\t};\n\n\treturn row;\n};\n\n//generate stats row\nColumnCalcs.prototype.generateRowData = function (pos, data) {\n\tvar rowData = {},\n\t calcs = pos == \"top\" ? this.topCalcs : this.botCalcs,\n\t type = pos == \"top\" ? \"topCalc\" : \"botCalc\",\n\t params,\n\t paramKey;\n\n\tcalcs.forEach(function (column) {\n\t\tvar values = [];\n\n\t\tif (column.modules.columnCalcs && column.modules.columnCalcs[type]) {\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tvalues.push(column.getFieldValue(item));\n\t\t\t});\n\n\t\t\tparamKey = type + \"Params\";\n\t\t\tparams = typeof column.modules.columnCalcs[paramKey] === \"function\" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];\n\n\t\t\tcolumn.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));\n\t\t}\n\t});\n\n\treturn rowData;\n};\n\nColumnCalcs.prototype.hasTopCalcs = function () {\n\treturn !!this.topCalcs.length;\n};\n\nColumnCalcs.prototype.hasBottomCalcs = function () {\n\treturn !!this.botCalcs.length;\n};\n\n//handle table redraw\nColumnCalcs.prototype.redraw = function () {\n\tif (this.topRow) {\n\t\tthis.topRow.normalizeHeight(true);\n\t}\n\tif (this.botRow) {\n\t\tthis.botRow.normalizeHeight(true);\n\t}\n};\n\n//return the calculated\nColumnCalcs.prototype.getResults = function () {\n\tvar self = this,\n\t results = {},\n\t groups;\n\n\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\tgroups = this.table.modules.groupRows.getGroups(true);\n\n\t\tgroups.forEach(function (group) {\n\t\t\tresults[group.getKey()] = self.getGroupResults(group);\n\t\t});\n\t} else {\n\t\tresults = {\n\t\t\ttop: this.topRow ? this.topRow.getData() : {},\n\t\t\tbottom: this.botRow ? this.botRow.getData() : {}\n\t\t};\n\t}\n\n\treturn results;\n};\n\n//get results from a group\nColumnCalcs.prototype.getGroupResults = function (group) {\n\tvar self = this,\n\t groupObj = group._getSelf(),\n\t subGroups = group.getSubGroups(),\n\t subGroupResults = {},\n\t results = {};\n\n\tsubGroups.forEach(function (subgroup) {\n\t\tsubGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);\n\t});\n\n\tresults = {\n\t\ttop: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},\n\t\tbottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},\n\t\tgroups: subGroupResults\n\t};\n\n\treturn results;\n};\n\n//default calculations\nColumnCalcs.prototype.calculations = {\n\t\"avg\": function avg(values, data, calcParams) {\n\t\tvar output = 0,\n\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : 2;\n\n\t\tif (values.length) {\n\t\t\toutput = values.reduce(function (sum, value) {\n\t\t\t\treturn Number(sum) + Number(value);\n\t\t\t});\n\n\t\t\toutput = output / values.length;\n\n\t\t\toutput = precision !== false ? output.toFixed(precision) : output;\n\t\t}\n\n\t\treturn parseFloat(output).toString();\n\t},\n\t\"max\": function max(values, data, calcParams) {\n\t\tvar output = null,\n\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function (value) {\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif (value > output || output === null) {\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? precision !== false ? output.toFixed(precision) : output : \"\";\n\t},\n\t\"min\": function min(values, data, calcParams) {\n\t\tvar output = null,\n\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tvalues.forEach(function (value) {\n\n\t\t\tvalue = Number(value);\n\n\t\t\tif (value < output || output === null) {\n\t\t\t\toutput = value;\n\t\t\t}\n\t\t});\n\n\t\treturn output !== null ? precision !== false ? output.toFixed(precision) : output : \"\";\n\t},\n\t\"sum\": function sum(values, data, calcParams) {\n\t\tvar output = 0,\n\t\t precision = typeof calcParams.precision !== \"undefined\" ? calcParams.precision : false;\n\n\t\tif (values.length) {\n\t\t\tvalues.forEach(function (value) {\n\t\t\t\tvalue = Number(value);\n\n\t\t\t\toutput += !isNaN(value) ? Number(value) : 0;\n\t\t\t});\n\t\t}\n\n\t\treturn precision !== false ? output.toFixed(precision) : output;\n\t},\n\t\"concat\": function concat(values, data, calcParams) {\n\t\tvar output = 0;\n\n\t\tif (values.length) {\n\t\t\toutput = values.reduce(function (sum, value) {\n\t\t\t\treturn String(sum) + String(value);\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t},\n\t\"count\": function count(values, data, calcParams) {\n\t\tvar output = 0;\n\n\t\tif (values.length) {\n\t\t\tvalues.forEach(function (value) {\n\t\t\t\tif (value) {\n\t\t\t\t\toutput++;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn output;\n\t}\n};\n\nTabulator.prototype.registerModule(\"columnCalcs\", ColumnCalcs);\n\nvar Clipboard = function Clipboard(table) {\n\tthis.table = table;\n\tthis.mode = true;\n\n\tthis.pasteParser = function () {};\n\tthis.pasteAction = function () {};\n\tthis.customSelection = false;\n\tthis.rowRange = false;\n\tthis.blocked = true; //block copy actions not originating from this command\n};\n\nClipboard.prototype.initialize = function () {\n\tvar _this46 = this;\n\n\tthis.mode = this.table.options.clipboard;\n\n\tthis.rowRange = this.table.options.clipboardCopyRowRange;\n\n\tif (this.mode === true || this.mode === \"copy\") {\n\t\tthis.table.element.addEventListener(\"copy\", function (e) {\n\t\t\tvar plain, html, list;\n\n\t\t\tif (!_this46.blocked) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tif (_this46.customSelection) {\n\t\t\t\t\tplain = _this46.customSelection;\n\n\t\t\t\t\tif (_this46.table.options.clipboardCopyFormatter) {\n\t\t\t\t\t\tplain = _this46.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tvar list = _this46.table.modules.export.generateExportList(_this46.table.options.clipboardCopyConfig, _this46.table.options.clipboardCopyStyled, _this46.rowRange, \"clipboard\");\n\n\t\t\t\t\thtml = _this46.table.modules.export.genereateHTMLTable(list);\n\t\t\t\t\tplain = html ? _this46.generatePlainContent(list) : \"\";\n\n\t\t\t\t\tif (_this46.table.options.clipboardCopyFormatter) {\n\t\t\t\t\t\tplain = _this46.table.options.clipboardCopyFormatter(\"plain\", plain);\n\t\t\t\t\t\thtml = _this46.table.options.clipboardCopyFormatter(\"html\", html);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (window.clipboardData && window.clipboardData.setData) {\n\t\t\t\t\twindow.clipboardData.setData('Text', plain);\n\t\t\t\t} else if (e.clipboardData && e.clipboardData.setData) {\n\t\t\t\t\te.clipboardData.setData('text/plain', plain);\n\t\t\t\t\tif (html) {\n\t\t\t\t\t\te.clipboardData.setData('text/html', html);\n\t\t\t\t\t}\n\t\t\t\t} else if (e.originalEvent && e.originalEvent.clipboardData.setData) {\n\t\t\t\t\te.originalEvent.clipboardData.setData('text/plain', plain);\n\t\t\t\t\tif (html) {\n\t\t\t\t\t\te.originalEvent.clipboardData.setData('text/html', html);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t_this46.table.options.clipboardCopied.call(_this46.table, plain, html);\n\n\t\t\t\t_this46.reset();\n\t\t\t}\n\t\t});\n\t}\n\n\tif (this.mode === true || this.mode === \"paste\") {\n\t\tthis.table.element.addEventListener(\"paste\", function (e) {\n\t\t\t_this46.paste(e);\n\t\t});\n\t}\n\n\tthis.setPasteParser(this.table.options.clipboardPasteParser);\n\tthis.setPasteAction(this.table.options.clipboardPasteAction);\n};\n\nClipboard.prototype.reset = function () {\n\tthis.blocked = true;\n\tthis.customSelection = false;\n};\n\nClipboard.prototype.generatePlainContent = function (list) {\n\tvar output = [];\n\n\tlist.forEach(function (row) {\n\t\tvar rowData = [];\n\n\t\trow.columns.forEach(function (col) {\n\t\t\tvar value = \"\";\n\n\t\t\tif (col) {\n\n\t\t\t\tif (row.type === \"group\") {\n\t\t\t\t\tcol.value = col.component.getKey();\n\t\t\t\t}\n\n\t\t\t\tif (col.value === null) {\n\t\t\t\t\tvalue = \"\";\n\t\t\t\t} else {\n\t\t\t\t\tswitch (_typeof(col.value)) {\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tvalue = JSON.stringify(col.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tvalue = col.value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trowData.push(value);\n\t\t});\n\n\t\toutput.push(rowData.join(\"\\t\"));\n\t});\n\n\treturn output.join(\"\\n\");\n};\n\nClipboard.prototype.copy = function (range, internal) {\n\tvar range, sel, textRange;\n\tthis.blocked = false;\n\tthis.customSelection = false;\n\n\tif (this.mode === true || this.mode === \"copy\") {\n\n\t\tthis.rowRange = range || this.table.options.clipboardCopyRowRange;\n\n\t\tif (typeof window.getSelection != \"undefined\" && typeof document.createRange != \"undefined\") {\n\t\t\trange = document.createRange();\n\t\t\trange.selectNodeContents(this.table.element);\n\t\t\tsel = window.getSelection();\n\n\t\t\tif (sel.toString() && internal) {\n\t\t\t\tthis.customSelection = sel.toString();\n\t\t\t}\n\n\t\t\tsel.removeAllRanges();\n\t\t\tsel.addRange(range);\n\t\t} else if (typeof document.selection != \"undefined\" && typeof document.body.createTextRange != \"undefined\") {\n\t\t\ttextRange = document.body.createTextRange();\n\t\t\ttextRange.moveToElementText(this.table.element);\n\t\t\ttextRange.select();\n\t\t}\n\n\t\tdocument.execCommand('copy');\n\n\t\tif (sel) {\n\t\t\tsel.removeAllRanges();\n\t\t}\n\t}\n};\n\n//PASTE EVENT HANDLING\n\nClipboard.prototype.setPasteAction = function (action) {\n\n\tswitch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {\n\t\tcase \"string\":\n\t\t\tthis.pasteAction = this.pasteActions[action];\n\n\t\t\tif (!this.pasteAction) {\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste action found:\", action);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\tthis.pasteAction = action;\n\t\t\tbreak;\n\t}\n};\n\nClipboard.prototype.setPasteParser = function (parser) {\n\tswitch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {\n\t\tcase \"string\":\n\t\t\tthis.pasteParser = this.pasteParsers[parser];\n\n\t\t\tif (!this.pasteParser) {\n\t\t\t\tconsole.warn(\"Clipboard Error - No such paste parser found:\", parser);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\tthis.pasteParser = parser;\n\t\t\tbreak;\n\t}\n};\n\nClipboard.prototype.paste = function (e) {\n\tvar data, rowData, rows;\n\n\tif (this.checkPaseOrigin(e)) {\n\n\t\tdata = this.getPasteData(e);\n\n\t\trowData = this.pasteParser.call(this, data);\n\n\t\tif (rowData) {\n\t\t\te.preventDefault();\n\n\t\t\tif (this.table.modExists(\"mutator\")) {\n\t\t\t\trowData = this.mutateData(rowData);\n\t\t\t}\n\n\t\t\trows = this.pasteAction.call(this, rowData);\n\t\t\tthis.table.options.clipboardPasted.call(this.table, data, rowData, rows);\n\t\t} else {\n\t\t\tthis.table.options.clipboardPasteError.call(this.table, data);\n\t\t}\n\t}\n};\n\nClipboard.prototype.mutateData = function (data) {\n\tvar self = this,\n\t output = [];\n\n\tif (Array.isArray(data)) {\n\t\tdata.forEach(function (row) {\n\t\t\toutput.push(self.table.modules.mutator.transformRow(row, \"clipboard\"));\n\t\t});\n\t} else {\n\t\toutput = data;\n\t}\n\n\treturn output;\n};\n\nClipboard.prototype.checkPaseOrigin = function (e) {\n\tvar valid = true;\n\n\tif (e.target.tagName != \"DIV\" || this.table.modules.edit.currentCell) {\n\t\tvalid = false;\n\t}\n\n\treturn valid;\n};\n\nClipboard.prototype.getPasteData = function (e) {\n\tvar data;\n\n\tif (window.clipboardData && window.clipboardData.getData) {\n\t\tdata = window.clipboardData.getData('Text');\n\t} else if (e.clipboardData && e.clipboardData.getData) {\n\t\tdata = e.clipboardData.getData('text/plain');\n\t} else if (e.originalEvent && e.originalEvent.clipboardData.getData) {\n\t\tdata = e.originalEvent.clipboardData.getData('text/plain');\n\t}\n\n\treturn data;\n};\n\nClipboard.prototype.pasteParsers = {\n\ttable: function table(clipboard) {\n\t\tvar data = [],\n\t\t success = false,\n\t\t headerFindSuccess = true,\n\t\t columns = this.table.columnManager.columns,\n\t\t columnMap = [],\n\t\t rows = [];\n\n\t\t//get data from clipboard into array of columns and rows.\n\t\tclipboard = clipboard.split(\"\\n\");\n\n\t\tclipboard.forEach(function (row) {\n\t\t\tdata.push(row.split(\"\\t\"));\n\t\t});\n\n\t\tif (data.length && !(data.length === 1 && data[0].length < 2)) {\n\t\t\tsuccess = true;\n\n\t\t\t//check if headers are present by title\n\t\t\tdata[0].forEach(function (value) {\n\t\t\t\tvar column = columns.find(function (column) {\n\t\t\t\t\treturn value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();\n\t\t\t\t});\n\n\t\t\t\tif (column) {\n\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t} else {\n\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//check if column headers are present by field\n\t\t\tif (!headerFindSuccess) {\n\t\t\t\theaderFindSuccess = true;\n\t\t\t\tcolumnMap = [];\n\n\t\t\t\tdata[0].forEach(function (value) {\n\t\t\t\t\tvar column = columns.find(function (column) {\n\t\t\t\t\t\treturn value && column.field && value.trim() && column.field.trim() === value.trim();\n\t\t\t\t\t});\n\n\t\t\t\t\tif (column) {\n\t\t\t\t\t\tcolumnMap.push(column);\n\t\t\t\t\t} else {\n\t\t\t\t\t\theaderFindSuccess = false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (!headerFindSuccess) {\n\t\t\t\t\tcolumnMap = this.table.columnManager.columnsByIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//remove header row if found\n\t\t\tif (headerFindSuccess) {\n\t\t\t\tdata.shift();\n\t\t\t}\n\n\t\t\tdata.forEach(function (item) {\n\t\t\t\tvar row = {};\n\n\t\t\t\titem.forEach(function (value, i) {\n\t\t\t\t\tif (columnMap[i]) {\n\t\t\t\t\t\trow[columnMap[i].field] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trows.push(row);\n\t\t\t});\n\n\t\t\treturn rows;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\nClipboard.prototype.pasteActions = {\n\treplace: function replace(rows) {\n\t\treturn this.table.setData(rows);\n\t},\n\tupdate: function update(rows) {\n\t\treturn this.table.updateOrAddData(rows);\n\t},\n\tinsert: function insert(rows) {\n\t\treturn this.table.addData(rows);\n\t}\n};\n\nTabulator.prototype.registerModule(\"clipboard\", Clipboard);\n\nvar DataTree = function DataTree(table) {\n\tthis.table = table;\n\tthis.indent = 10;\n\tthis.field = \"\";\n\tthis.collapseEl = null;\n\tthis.expandEl = null;\n\tthis.branchEl = null;\n\tthis.elementField = false;\n\n\tthis.startOpen = function () {};\n\n\tthis.displayIndex = 0;\n};\n\nDataTree.prototype.initialize = function () {\n\tvar dummyEl = null,\n\t firstCol = this.table.columnManager.getFirstVisibileColumn(),\n\t options = this.table.options;\n\n\tthis.field = options.dataTreeChildField;\n\tthis.indent = options.dataTreeChildIndent;\n\tthis.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);\n\n\tif (options.dataTreeBranchElement) {\n\n\t\tif (options.dataTreeBranchElement === true) {\n\t\t\tthis.branchEl = document.createElement(\"div\");\n\t\t\tthis.branchEl.classList.add(\"tabulator-data-tree-branch\");\n\t\t} else {\n\t\t\tif (typeof options.dataTreeBranchElement === \"string\") {\n\t\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\t\tdummyEl.innerHTML = options.dataTreeBranchElement;\n\t\t\t\tthis.branchEl = dummyEl.firstChild;\n\t\t\t} else {\n\t\t\t\tthis.branchEl = options.dataTreeBranchElement;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (options.dataTreeCollapseElement) {\n\t\tif (typeof options.dataTreeCollapseElement === \"string\") {\n\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\tdummyEl.innerHTML = options.dataTreeCollapseElement;\n\t\t\tthis.collapseEl = dummyEl.firstChild;\n\t\t} else {\n\t\t\tthis.collapseEl = options.dataTreeCollapseElement;\n\t\t}\n\t} else {\n\t\tthis.collapseEl = document.createElement(\"div\");\n\t\tthis.collapseEl.classList.add(\"tabulator-data-tree-control\");\n\t\tthis.collapseEl.tabIndex = 0;\n\t\tthis.collapseEl.innerHTML = \"<div class='tabulator-data-tree-control-collapse'></div>\";\n\t}\n\n\tif (options.dataTreeExpandElement) {\n\t\tif (typeof options.dataTreeExpandElement === \"string\") {\n\t\t\tdummyEl = document.createElement(\"div\");\n\t\t\tdummyEl.innerHTML = options.dataTreeExpandElement;\n\t\t\tthis.expandEl = dummyEl.firstChild;\n\t\t} else {\n\t\t\tthis.expandEl = options.dataTreeExpandElement;\n\t\t}\n\t} else {\n\t\tthis.expandEl = document.createElement(\"div\");\n\t\tthis.expandEl.classList.add(\"tabulator-data-tree-control\");\n\t\tthis.expandEl.tabIndex = 0;\n\t\tthis.expandEl.innerHTML = \"<div class='tabulator-data-tree-control-expand'></div>\";\n\t}\n\n\tswitch (_typeof(options.dataTreeStartExpanded)) {\n\t\tcase \"boolean\":\n\t\t\tthis.startOpen = function (row, index) {\n\t\t\t\treturn options.dataTreeStartExpanded;\n\t\t\t};\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\tthis.startOpen = options.dataTreeStartExpanded;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tthis.startOpen = function (row, index) {\n\t\t\t\treturn options.dataTreeStartExpanded[index];\n\t\t\t};\n\t\t\tbreak;\n\t}\n};\n\nDataTree.prototype.initializeRow = function (row) {\n\tvar childArray = row.getData()[this.field];\n\tvar isArray = Array.isArray(childArray);\n\n\tvar children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === \"object\" && childArray !== null;\n\n\tif (!children && row.modules.dataTree && row.modules.dataTree.branchEl) {\n\t\trow.modules.dataTree.branchEl.parentNode.removeChild(row.modules.dataTree.branchEl);\n\t}\n\n\tif (!children && row.modules.dataTree && row.modules.dataTree.controlEl) {\n\t\trow.modules.dataTree.controlEl.parentNode.removeChild(row.modules.dataTree.controlEl);\n\t}\n\n\trow.modules.dataTree = {\n\t\tindex: row.modules.dataTree ? row.modules.dataTree.index : 0,\n\t\topen: children ? row.modules.dataTree ? row.modules.dataTree.open : this.startOpen(row.getComponent(), 0) : false,\n\t\tcontrolEl: row.modules.dataTree && children ? row.modules.dataTree.controlEl : false,\n\t\tbranchEl: row.modules.dataTree && children ? row.modules.dataTree.branchEl : false,\n\t\tparent: row.modules.dataTree ? row.modules.dataTree.parent : false,\n\t\tchildren: children\n\t};\n};\n\nDataTree.prototype.layoutRow = function (row) {\n\tvar cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],\n\t el = cell.getElement(),\n\t config = row.modules.dataTree;\n\n\tif (config.branchEl) {\n\t\tif (config.branchEl.parentNode) {\n\t\t\tconfig.branchEl.parentNode.removeChild(config.branchEl);\n\t\t}\n\t\tconfig.branchEl = false;\n\t}\n\n\tif (config.controlEl) {\n\t\tif (config.controlEl.parentNode) {\n\t\t\tconfig.controlEl.parentNode.removeChild(config.controlEl);\n\t\t}\n\t\tconfig.controlEl = false;\n\t}\n\n\tthis.generateControlElement(row, el);\n\n\trow.getElement().classList.add(\"tabulator-tree-level-\" + config.index);\n\n\tif (config.index) {\n\t\tif (this.branchEl) {\n\t\t\tconfig.branchEl = this.branchEl.cloneNode(true);\n\t\t\tel.insertBefore(config.branchEl, el.firstChild);\n\n\t\t\tif (this.table.rtl) {\n\t\t\t\tconfig.branchEl.style.marginRight = (config.branchEl.offsetWidth + config.branchEl.style.marginLeft) * (config.index - 1) + config.index * this.indent + \"px\";\n\t\t\t} else {\n\t\t\t\tconfig.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + \"px\";\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (this.table.rtl) {\n\t\t\t\tel.style.paddingRight = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-right')) + config.index * this.indent + \"px\";\n\t\t\t} else {\n\t\t\t\tel.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + \"px\";\n\t\t\t}\n\t\t}\n\t}\n};\n\nDataTree.prototype.generateControlElement = function (row, el) {\n\tvar _this47 = this;\n\n\tvar config = row.modules.dataTree,\n\t el = el || row.getCells()[0].getElement(),\n\t oldControl = config.controlEl;\n\n\tif (config.children !== false) {\n\n\t\tif (config.open) {\n\t\t\tconfig.controlEl = this.collapseEl.cloneNode(true);\n\t\t\tconfig.controlEl.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t_this47.collapseRow(row);\n\t\t\t});\n\t\t} else {\n\t\t\tconfig.controlEl = this.expandEl.cloneNode(true);\n\t\t\tconfig.controlEl.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t_this47.expandRow(row);\n\t\t\t});\n\t\t}\n\n\t\tconfig.controlEl.addEventListener(\"mousedown\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tif (oldControl && oldControl.parentNode === el) {\n\t\t\toldControl.parentNode.replaceChild(config.controlEl, oldControl);\n\t\t} else {\n\t\t\tel.insertBefore(config.controlEl, el.firstChild);\n\t\t}\n\t}\n};\n\nDataTree.prototype.setDisplayIndex = function (index) {\n\tthis.displayIndex = index;\n};\n\nDataTree.prototype.getDisplayIndex = function () {\n\treturn this.displayIndex;\n};\n\nDataTree.prototype.getRows = function (rows) {\n\tvar _this48 = this;\n\n\tvar output = [];\n\n\trows.forEach(function (row, i) {\n\t\tvar config, children;\n\n\t\toutput.push(row);\n\n\t\tif (row instanceof Row) {\n\n\t\t\trow.create();\n\n\t\t\tconfig = row.modules.dataTree.children;\n\n\t\t\tif (!config.index && config.children !== false) {\n\t\t\t\tchildren = _this48.getChildren(row);\n\n\t\t\t\tchildren.forEach(function (child) {\n\t\t\t\t\tchild.create();\n\t\t\t\t\toutput.push(child);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\treturn output;\n};\n\nDataTree.prototype.getChildren = function (row, allChildren) {\n\tvar _this49 = this;\n\n\tvar config = row.modules.dataTree,\n\t children = [],\n\t output = [];\n\n\tif (config.children !== false && (config.open || allChildren)) {\n\t\tif (!Array.isArray(config.children)) {\n\t\t\tconfig.children = this.generateChildren(row);\n\t\t}\n\n\t\tif (this.table.modExists(\"filter\") && this.table.options.dataTreeFilter) {\n\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t} else {\n\t\t\tchildren = config.children;\n\t\t}\n\n\t\tif (this.table.modExists(\"sort\") && this.table.options.dataTreeSort) {\n\t\t\tthis.table.modules.sort.sort(children);\n\t\t}\n\n\t\tchildren.forEach(function (child) {\n\t\t\toutput.push(child);\n\n\t\t\tvar subChildren = _this49.getChildren(child);\n\n\t\t\tsubChildren.forEach(function (sub) {\n\t\t\t\toutput.push(sub);\n\t\t\t});\n\t\t});\n\t}\n\n\treturn output;\n};\n\nDataTree.prototype.generateChildren = function (row) {\n\tvar _this50 = this;\n\n\tvar children = [];\n\n\tvar childArray = row.getData()[this.field];\n\n\tif (!Array.isArray(childArray)) {\n\t\tchildArray = [childArray];\n\t}\n\n\tchildArray.forEach(function (childData) {\n\t\tvar childRow = new Row(childData || {}, _this50.table.rowManager);\n\n\t\tchildRow.create();\n\n\t\tchildRow.modules.dataTree.index = row.modules.dataTree.index + 1;\n\t\tchildRow.modules.dataTree.parent = row;\n\n\t\tif (childRow.modules.dataTree.children) {\n\t\t\tchildRow.modules.dataTree.open = _this50.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);\n\t\t}\n\t\tchildren.push(childRow);\n\t});\n\n\treturn children;\n};\n\nDataTree.prototype.expandRow = function (row, silent) {\n\tvar config = row.modules.dataTree;\n\n\tif (config.children !== false) {\n\t\tconfig.open = true;\n\n\t\trow.reinitialize();\n\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\n\t\tthis.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);\n\t}\n};\n\nDataTree.prototype.collapseRow = function (row) {\n\tvar config = row.modules.dataTree;\n\n\tif (config.children !== false) {\n\t\tconfig.open = false;\n\n\t\trow.reinitialize();\n\n\t\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n\n\t\tthis.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);\n\t}\n};\n\nDataTree.prototype.toggleRow = function (row) {\n\tvar config = row.modules.dataTree;\n\n\tif (config.children !== false) {\n\t\tif (config.open) {\n\t\t\tthis.collapseRow(row);\n\t\t} else {\n\t\t\tthis.expandRow(row);\n\t\t}\n\t}\n};\n\nDataTree.prototype.getTreeParent = function (row) {\n\treturn row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;\n};\n\nDataTree.prototype.getFilteredTreeChildren = function (row) {\n\tvar config = row.modules.dataTree,\n\t output = [],\n\t children;\n\n\tif (config.children) {\n\n\t\tif (!Array.isArray(config.children)) {\n\t\t\tconfig.children = this.generateChildren(row);\n\t\t}\n\n\t\tif (this.table.modExists(\"filter\") && this.table.options.dataTreeFilter) {\n\t\t\tchildren = this.table.modules.filter.filter(config.children);\n\t\t} else {\n\t\t\tchildren = config.children;\n\t\t}\n\n\t\tchildren.forEach(function (childRow) {\n\t\t\tif (childRow instanceof Row) {\n\t\t\t\toutput.push(childRow);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn output;\n};\n\nDataTree.prototype.rowDelete = function (row) {\n\tvar parent = row.modules.dataTree.parent,\n\t childIndex;\n\n\tif (parent) {\n\t\tchildIndex = this.findChildIndex(row, parent);\n\n\t\tif (childIndex !== false) {\n\t\t\tparent.data[this.field].splice(childIndex, 1);\n\t\t}\n\n\t\tif (!parent.data[this.field].length) {\n\t\t\tdelete parent.data[this.field];\n\t\t}\n\n\t\tthis.initializeRow(parent);\n\t\tthis.layoutRow(parent);\n\t}\n\n\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n};\n\nDataTree.prototype.addTreeChildRow = function (row, data, top, index) {\n\tvar childIndex = false;\n\n\tif (typeof data === \"string\") {\n\t\tdata = JSON.parse(data);\n\t}\n\n\tif (!Array.isArray(row.data[this.field])) {\n\t\trow.data[this.field] = [];\n\n\t\trow.modules.dataTree.open = this.startOpen(row.getComponent(), row.modules.dataTree.index);\n\t}\n\n\tif (typeof index !== \"undefined\") {\n\t\tchildIndex = this.findChildIndex(index, row);\n\n\t\tif (childIndex !== false) {\n\t\t\trow.data[this.field].splice(top ? childIndex : childIndex + 1, 0, data);\n\t\t}\n\t}\n\n\tif (childIndex === false) {\n\t\tif (top) {\n\t\t\trow.data[this.field].unshift(data);\n\t\t} else {\n\t\t\trow.data[this.field].push(data);\n\t\t}\n\t}\n\n\tthis.initializeRow(row);\n\tthis.layoutRow(row);\n\n\tthis.table.rowManager.refreshActiveData(\"tree\", false, true);\n};\n\nDataTree.prototype.findChildIndex = function (subject, parent) {\n\tvar _this51 = this;\n\n\tvar match = false;\n\n\tif ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == \"object\") {\n\n\t\tif (subject instanceof Row) {\n\t\t\t//subject is row element\n\t\t\tmatch = subject.data;\n\t\t} else if (subject instanceof RowComponent) {\n\t\t\t//subject is public row component\n\t\t\tmatch = subject._getSelf().data;\n\t\t} else if (typeof HTMLElement !== \"undefined\" && subject instanceof HTMLElement) {\n\t\t\tif (parent.modules.dataTree) {\n\t\t\t\tmatch = parent.modules.dataTree.children.find(function (childRow) {\n\t\t\t\t\treturn childRow instanceof Row ? childRow.element === subject : false;\n\t\t\t\t});\n\n\t\t\t\tif (match) {\n\t\t\t\t\tmatch = match.data;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if (typeof subject == \"undefined\" || subject === null) {\n\t\tmatch = false;\n\t} else {\n\t\t//subject should be treated as the index of the row\n\t\tmatch = parent.data[this.field].find(function (row) {\n\t\t\treturn row.data[_this51.table.options.index] == subject;\n\t\t});\n\t}\n\n\tif (match) {\n\n\t\tif (Array.isArray(parent.data[this.field])) {\n\t\t\tmatch = parent.data[this.field].indexOf(match);\n\t\t}\n\n\t\tif (match == -1) {\n\t\t\tmatch = false;\n\t\t}\n\t}\n\n\t//catch all for any other type of input\n\n\treturn match;\n};\n\nDataTree.prototype.getTreeChildren = function (row, component, recurse) {\n\tvar _this52 = this;\n\n\tvar config = row.modules.dataTree,\n\t output = [];\n\n\tif (config.children) {\n\n\t\tif (!Array.isArray(config.children)) {\n\t\t\tconfig.children = this.generateChildren(row);\n\t\t}\n\n\t\tconfig.children.forEach(function (childRow) {\n\t\t\tif (childRow instanceof Row) {\n\t\t\t\toutput.push(component ? childRow.getComponent() : childRow);\n\n\t\t\t\tif (recurse) {\n\t\t\t\t\toutput = output.concat(_this52.getTreeChildren(childRow, component, recurse));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\treturn output;\n};\n\nDataTree.prototype.checkForRestyle = function (cell) {\n\tif (!cell.row.cells.indexOf(cell)) {\n\t\tcell.row.reinitialize();\n\t}\n};\n\nDataTree.prototype.getChildField = function () {\n\treturn this.field;\n};\n\nDataTree.prototype.redrawNeeded = function (data) {\n\treturn (this.field ? typeof data[this.field] !== \"undefined\" : false) || (this.elementField ? typeof data[this.elementField] !== \"undefined\" : false);\n};\n\nTabulator.prototype.registerModule(\"dataTree\", DataTree);\n\nvar Download = function Download(table) {\n\tthis.table = table; //hold Tabulator object\n};\n\n//trigger file download\nDownload.prototype.download = function (type, filename, options, range, interceptCallback) {\n\tvar self = this,\n\t downloadFunc = false;\n\n\tfunction buildLink(data, mime) {\n\t\tif (interceptCallback) {\n\t\t\tif (interceptCallback === true) {\n\t\t\t\tself.triggerDownload(data, mime, type, filename, true);\n\t\t\t} else {\n\t\t\t\tinterceptCallback(data);\n\t\t\t}\n\t\t} else {\n\t\t\tself.triggerDownload(data, mime, type, filename);\n\t\t}\n\t}\n\n\tif (typeof type == \"function\") {\n\t\tdownloadFunc = type;\n\t} else {\n\t\tif (self.downloaders[type]) {\n\t\t\tdownloadFunc = self.downloaders[type];\n\t\t} else {\n\t\t\tconsole.warn(\"Download Error - No such download type found: \", type);\n\t\t}\n\t}\n\n\tif (downloadFunc) {\n\t\tvar list = this.generateExportList(range);\n\n\t\tdownloadFunc.call(this.table, list, options || {}, buildLink);\n\t}\n};\n\nDownload.prototype.generateExportList = function (range) {\n\tvar list = this.table.modules.export.generateExportList(this.table.options.downloadConfig, false, range || this.table.options.downloadRowRange, \"download\");\n\n\t//assign group header formatter\n\tvar groupHeader = this.table.options.groupHeaderDownload;\n\n\tif (groupHeader && !Array.isArray(groupHeader)) {\n\t\tgroupHeader = [groupHeader];\n\t}\n\n\tlist.forEach(function (row) {\n\t\tvar group;\n\n\t\tif (row.type === \"group\") {\n\t\t\tgroup = row.columns[0];\n\n\t\t\tif (groupHeader && groupHeader[row.indent]) {\n\t\t\t\tgroup.value = groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn list;\n};\n\nDownload.prototype.triggerDownload = function (data, mime, type, filename, newTab) {\n\tvar element = document.createElement('a'),\n\t blob = new Blob([data], { type: mime }),\n\t filename = filename || \"Tabulator.\" + (typeof type === \"function\" ? \"txt\" : type);\n\n\tblob = this.table.options.downloadReady.call(this.table, data, blob);\n\n\tif (blob) {\n\n\t\tif (newTab) {\n\t\t\twindow.open(window.URL.createObjectURL(blob));\n\t\t} else {\n\t\t\tif (navigator.msSaveOrOpenBlob) {\n\t\t\t\tnavigator.msSaveOrOpenBlob(blob, filename);\n\t\t\t} else {\n\t\t\t\telement.setAttribute('href', window.URL.createObjectURL(blob));\n\n\t\t\t\t//set file title\n\t\t\t\telement.setAttribute('download', filename);\n\n\t\t\t\t//trigger download\n\t\t\t\telement.style.display = 'none';\n\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\telement.click();\n\n\t\t\t\t//remove temporary link element\n\t\t\t\tdocument.body.removeChild(element);\n\t\t\t}\n\t\t}\n\n\t\tif (this.table.options.downloadComplete) {\n\t\t\tthis.table.options.downloadComplete();\n\t\t}\n\t}\n};\n\nDownload.prototype.commsReceived = function (table, action, data) {\n\tswitch (action) {\n\t\tcase \"intercept\":\n\t\t\tthis.download(data.type, \"\", data.options, data.active, data.intercept);\n\t\t\tbreak;\n\t}\n};\n\n//downloaders\nDownload.prototype.downloaders = {\n\tcsv: function csv(list, options, setFileContents) {\n\t\tvar delimiter = options && options.delimiter ? options.delimiter : \",\",\n\t\t fileContents = [],\n\t\t headers = [];\n\n\t\tlist.forEach(function (row) {\n\t\t\tvar item = [];\n\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"group\":\n\t\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process row groups\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tconsole.warn(\"Download Warning - CSV downloader cannot process column calculations\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"header\":\n\t\t\t\t\trow.columns.forEach(function (col, i) {\n\t\t\t\t\t\tif (col && col.depth === 1) {\n\t\t\t\t\t\t\theaders[i] = typeof col.value == \"undefined\" || col.value === null ? \"\" : '\"' + String(col.value).split('\"').join('\"\"') + '\"';\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"row\":\n\t\t\t\t\trow.columns.forEach(function (col) {\n\n\t\t\t\t\t\tif (col) {\n\n\t\t\t\t\t\t\tswitch (_typeof(col.value)) {\n\t\t\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\n\t\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\titem.push('\"' + String(col.value).split('\"').join('\"\"') + '\"');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tfileContents.push(item.join(delimiter));\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tif (headers.length) {\n\t\t\tfileContents.unshift(headers.join(delimiter));\n\t\t}\n\n\t\tfileContents = fileContents.join(\"\\n\");\n\n\t\tif (options.bom) {\n\t\t\tfileContents = '\\uFEFF' + fileContents;\n\t\t}\n\n\t\tsetFileContents(fileContents, \"text/csv\");\n\t},\n\n\tjson: function json(list, options, setFileContents) {\n\t\tvar fileContents = [];\n\n\t\tlist.forEach(function (row) {\n\t\t\tvar item = {};\n\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"header\":\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"group\":\n\t\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process row groups\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tconsole.warn(\"Download Warning - JSON downloader cannot process column calculations\");\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"row\":\n\t\t\t\t\trow.columns.forEach(function (col) {\n\t\t\t\t\t\tif (col) {\n\t\t\t\t\t\t\titem[col.component.getField()] = col.value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tfileContents.push(item);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tfileContents = JSON.stringify(fileContents, null, '\\t');\n\n\t\tsetFileContents(fileContents, \"application/json\");\n\t},\n\n\tpdf: function pdf(list, options, setFileContents) {\n\t\tvar header = [],\n\t\t body = [],\n\t\t autoTableParams = {},\n\t\t rowGroupStyles = options.rowGroupStyles || {\n\t\t\tfontStyle: \"bold\",\n\t\t\tfontSize: 12,\n\t\t\tcellPadding: 6,\n\t\t\tfillColor: 220\n\t\t},\n\t\t rowCalcStyles = options.rowCalcStyles || {\n\t\t\tfontStyle: \"bold\",\n\t\t\tfontSize: 10,\n\t\t\tcellPadding: 4,\n\t\t\tfillColor: 232\n\t\t},\n\t\t jsPDFParams = options.jsPDF || {},\n\t\t title = options && options.title ? options.title : \"\";\n\n\t\tif (!jsPDFParams.orientation) {\n\t\t\tjsPDFParams.orientation = options.orientation || \"landscape\";\n\t\t}\n\n\t\tif (!jsPDFParams.unit) {\n\t\t\tjsPDFParams.unit = \"pt\";\n\t\t}\n\n\t\t//parse row list\n\t\tlist.forEach(function (row) {\n\t\t\tvar item = {};\n\n\t\t\tswitch (row.type) {\n\t\t\t\tcase \"header\":\n\t\t\t\t\theader.push(parseRow(row));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"group\":\n\t\t\t\t\tbody.push(parseRow(row, rowGroupStyles));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"calc\":\n\t\t\t\t\tbody.push(parseRow(row, rowCalcStyles));\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"row\":\n\t\t\t\t\tbody.push(parseRow(row));\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tfunction parseRow(row, styles) {\n\t\t\tvar rowData = [];\n\n\t\t\trow.columns.forEach(function (col) {\n\t\t\t\tvar cell;\n\n\t\t\t\tif (col) {\n\t\t\t\t\tswitch (_typeof(col.value)) {\n\t\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\t\tcol.value = JSON.stringify(col.value);\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\t\tcol.value = \"\";\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcell = {\n\t\t\t\t\t\tcontent: col.value,\n\t\t\t\t\t\tcolSpan: col.width,\n\t\t\t\t\t\trowSpan: col.height\n\t\t\t\t\t};\n\n\t\t\t\t\tif (styles) {\n\t\t\t\t\t\tcell.styles = styles;\n\t\t\t\t\t}\n\n\t\t\t\t\trowData.push(cell);\n\t\t\t\t} else {\n\t\t\t\t\trowData.push(\"\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn rowData;\n\t\t}\n\n\t\t//configure PDF\n\t\tvar doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables\n\n\t\tif (options && options.autoTable) {\n\t\t\tif (typeof options.autoTable === \"function\") {\n\t\t\t\tautoTableParams = options.autoTable(doc) || {};\n\t\t\t} else {\n\t\t\t\tautoTableParams = options.autoTable;\n\t\t\t}\n\t\t}\n\n\t\tif (title) {\n\t\t\tautoTableParams.addPageContent = function (data) {\n\t\t\t\tdoc.text(title, 40, 30);\n\t\t\t};\n\t\t}\n\n\t\tautoTableParams.head = header;\n\t\tautoTableParams.body = body;\n\n\t\tdoc.autoTable(autoTableParams);\n\n\t\tif (options && options.documentProcessing) {\n\t\t\toptions.documentProcessing(doc);\n\t\t}\n\n\t\tsetFileContents(doc.output(\"arraybuffer\"), \"application/pdf\");\n\t},\n\n\txlsx: function xlsx(list, options, setFileContents) {\n\t\tvar self = this,\n\t\t sheetName = options.sheetName || \"Sheet1\",\n\t\t workbook = XLSX.utils.book_new(),\n\t\t output;\n\n\t\tworkbook.SheetNames = [];\n\t\tworkbook.Sheets = {};\n\n\t\tfunction generateSheet() {\n\t\t\tvar rows = [],\n\t\t\t merges = [],\n\t\t\t worksheet = {},\n\t\t\t range = { s: { c: 0, r: 0 }, e: { c: list[0] ? list[0].columns.reduce(function (a, b) {\n\t\t\t\t\t\treturn a + (b && b.width ? b.width : 1);\n\t\t\t\t\t}, 0) : 0, r: list.length } };\n\n\t\t\t//parse row list\n\t\t\tlist.forEach(function (row, i) {\n\t\t\t\tvar rowData = [];\n\n\t\t\t\trow.columns.forEach(function (col, j) {\n\n\t\t\t\t\tif (col) {\n\t\t\t\t\t\trowData.push(!(col.value instanceof Date) && _typeof(col.value) === \"object\" ? JSON.stringify(col.value) : col.value);\n\n\t\t\t\t\t\tif (col.width > 1 || col.height > -1) {\n\t\t\t\t\t\t\tmerges.push({ s: { r: i, c: j }, e: { r: i + col.height - 1, c: j + col.width - 1 } });\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trowData.push(\"\");\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\trows.push(rowData);\n\t\t\t});\n\n\t\t\t//convert rows to worksheet\n\t\t\tXLSX.utils.sheet_add_aoa(worksheet, rows);\n\n\t\t\tworksheet['!ref'] = XLSX.utils.encode_range(range);\n\n\t\t\tif (merges.length) {\n\t\t\t\tworksheet[\"!merges\"] = merges;\n\t\t\t}\n\n\t\t\treturn worksheet;\n\t\t}\n\n\t\tif (options.sheetOnly) {\n\t\t\tsetFileContents(generateSheet());\n\t\t\treturn;\n\t\t}\n\n\t\tif (options.sheets) {\n\t\t\tfor (var sheet in options.sheets) {\n\n\t\t\t\tif (options.sheets[sheet] === true) {\n\t\t\t\t\tworkbook.SheetNames.push(sheet);\n\t\t\t\t\tworkbook.Sheets[sheet] = generateSheet();\n\t\t\t\t} else {\n\n\t\t\t\t\tworkbook.SheetNames.push(sheet);\n\n\t\t\t\t\tthis.modules.comms.send(options.sheets[sheet], \"download\", \"intercept\", {\n\t\t\t\t\t\ttype: \"xlsx\",\n\t\t\t\t\t\toptions: { sheetOnly: true },\n\t\t\t\t\t\tactive: self.active,\n\t\t\t\t\t\tintercept: function intercept(data) {\n\t\t\t\t\t\t\tworkbook.Sheets[sheet] = data;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tworkbook.SheetNames.push(sheetName);\n\t\t\tworkbook.Sheets[sheetName] = generateSheet();\n\t\t}\n\n\t\tif (options.documentProcessing) {\n\t\t\tworkbook = options.documentProcessing(workbook);\n\t\t}\n\n\t\t//convert workbook to binary array\n\t\tfunction s2ab(s) {\n\t\t\tvar buf = new ArrayBuffer(s.length);\n\t\t\tvar view = new Uint8Array(buf);\n\t\t\tfor (var i = 0; i != s.length; ++i) {\n\t\t\t\tview[i] = s.charCodeAt(i) & 0xFF;\n\t\t\t}return buf;\n\t\t}\n\n\t\toutput = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });\n\n\t\tsetFileContents(s2ab(output), \"application/octet-stream\");\n\t},\n\n\thtml: function html(list, options, setFileContents) {\n\t\tif (this.modExists(\"export\", true)) {\n\t\t\tsetFileContents(this.modules.export.genereateHTMLTable(list), \"text/html\");\n\t\t}\n\t}\n\n};\n\nTabulator.prototype.registerModule(\"download\", Download);\n\nvar Edit = function Edit(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.currentCell = false; //hold currently editing cell\n\tthis.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening\n\tthis.recursionBlock = false; //prevent focus recursion\n\tthis.invalidEdit = false;\n\tthis.editedCells = [];\n};\n\n//initialize column editor\nEdit.prototype.initializeColumn = function (column) {\n\tvar self = this,\n\t config = {\n\t\teditor: false,\n\t\tblocked: false,\n\t\tcheck: column.definition.editable,\n\t\tparams: column.definition.editorParams || {}\n\t};\n\n\t//set column editor\n\tswitch (_typeof(column.definition.editor)) {\n\t\tcase \"string\":\n\n\t\t\tif (column.definition.editor === \"tick\") {\n\t\t\t\tcolumn.definition.editor = \"tickCross\";\n\t\t\t\tconsole.warn(\"DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor\");\n\t\t\t}\n\n\t\t\tif (self.editors[column.definition.editor]) {\n\t\t\t\tconfig.editor = self.editors[column.definition.editor];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Editor Error - No such editor found: \", column.definition.editor);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\tconfig.editor = column.definition.editor;\n\t\t\tbreak;\n\n\t\tcase \"boolean\":\n\n\t\t\tif (column.definition.editor === true) {\n\n\t\t\t\tif (typeof column.definition.formatter !== \"function\") {\n\n\t\t\t\t\tif (column.definition.formatter === \"tick\") {\n\t\t\t\t\t\tcolumn.definition.formatter = \"tickCross\";\n\t\t\t\t\t\tconsole.warn(\"DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor\");\n\t\t\t\t\t}\n\n\t\t\t\t\tif (self.editors[column.definition.formatter]) {\n\t\t\t\t\t\tconfig.editor = self.editors[column.definition.formatter];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconfig.editor = self.editors[\"input\"];\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Editor Error - Cannot auto lookup editor for a custom formatter: \", column.definition.formatter);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\tif (config.editor) {\n\t\tcolumn.modules.edit = config;\n\t}\n};\n\nEdit.prototype.getCurrentCell = function () {\n\treturn this.currentCell ? this.currentCell.getComponent() : false;\n};\n\nEdit.prototype.clearEditor = function (cancel) {\n\tvar cell = this.currentCell,\n\t cellEl;\n\n\tthis.invalidEdit = false;\n\n\tif (cell) {\n\t\tthis.currentCell = false;\n\n\t\tcellEl = cell.getElement();\n\n\t\tif (cancel) {\n\t\t\tcell.validate();\n\t\t} else {\n\t\t\tcellEl.classList.remove(\"tabulator-validation-fail\");\n\t\t}\n\n\t\tcellEl.classList.remove(\"tabulator-editing\");\n\t\twhile (cellEl.firstChild) {\n\t\t\tcellEl.removeChild(cellEl.firstChild);\n\t\t}cell.row.getElement().classList.remove(\"tabulator-row-editing\");\n\t}\n};\n\nEdit.prototype.cancelEdit = function () {\n\n\tif (this.currentCell) {\n\t\tvar cell = this.currentCell;\n\t\tvar component = this.currentCell.getComponent();\n\n\t\tthis.clearEditor(true);\n\t\tcell.setValueActual(cell.getValue());\n\t\tcell.cellRendered();\n\n\t\tif (cell.column.definition.editor == \"textarea\" || cell.column.definition.variableHeight) {\n\t\t\tcell.row.normalizeHeight(true);\n\t\t}\n\n\t\tif (cell.column.cellEvents.cellEditCancelled) {\n\t\t\tcell.column.cellEvents.cellEditCancelled.call(this.table, component);\n\t\t}\n\n\t\tthis.table.options.cellEditCancelled.call(this.table, component);\n\t}\n};\n\n//return a formatted value for a cell\nEdit.prototype.bindEditor = function (cell) {\n\tvar self = this,\n\t element = cell.getElement(true);\n\n\telement.setAttribute(\"tabindex\", 0);\n\n\telement.addEventListener(\"click\", function (e) {\n\t\tif (!element.classList.contains(\"tabulator-editing\")) {\n\t\t\telement.focus({ preventScroll: true });\n\t\t}\n\t});\n\n\telement.addEventListener(\"mousedown\", function (e) {\n\t\tif (e.button === 2) {\n\t\t\te.preventDefault();\n\t\t} else {\n\t\t\tself.mouseClick = true;\n\t\t}\n\t});\n\n\telement.addEventListener(\"focus\", function (e) {\n\t\tif (!self.recursionBlock) {\n\t\t\tself.edit(cell, e, false);\n\t\t}\n\t});\n};\n\nEdit.prototype.focusCellNoEvent = function (cell, block) {\n\tthis.recursionBlock = true;\n\tif (!(block && this.table.browser === \"ie\")) {\n\t\tcell.getElement().focus({ preventScroll: true });\n\t}\n\tthis.recursionBlock = false;\n};\n\nEdit.prototype.editCell = function (cell, forceEdit) {\n\tthis.focusCellNoEvent(cell);\n\tthis.edit(cell, false, forceEdit);\n};\n\nEdit.prototype.focusScrollAdjust = function (cell) {\n\tif (this.table.rowManager.getRenderMode() == \"virtual\") {\n\t\tvar topEdge = this.table.rowManager.element.scrollTop,\n\t\t bottomEdge = this.table.rowManager.element.clientHeight + this.table.rowManager.element.scrollTop,\n\t\t rowEl = cell.row.getElement(),\n\t\t offset = rowEl.offsetTop;\n\n\t\tif (rowEl.offsetTop < topEdge) {\n\t\t\tthis.table.rowManager.element.scrollTop -= topEdge - rowEl.offsetTop;\n\t\t} else {\n\t\t\tif (rowEl.offsetTop + rowEl.offsetHeight > bottomEdge) {\n\t\t\t\tthis.table.rowManager.element.scrollTop += rowEl.offsetTop + rowEl.offsetHeight - bottomEdge;\n\t\t\t}\n\t\t}\n\n\t\tvar leftEdge = this.table.rowManager.element.scrollLeft,\n\t\t rightEdge = this.table.rowManager.element.clientWidth + this.table.rowManager.element.scrollLeft,\n\t\t cellEl = cell.getElement(),\n\t\t offset = cellEl.offsetLeft;\n\n\t\tif (this.table.modExists(\"frozenColumns\")) {\n\t\t\tleftEdge += parseInt(this.table.modules.frozenColumns.leftMargin);\n\t\t\trightEdge -= parseInt(this.table.modules.frozenColumns.rightMargin);\n\t\t}\n\n\t\tif (this.table.options.virtualDomHoz) {\n\t\t\tleftEdge -= parseInt(this.table.vdomHoz.vDomPadLeft);\n\t\t\trightEdge -= parseInt(this.table.vdomHoz.vDomPadLeft);\n\t\t}\n\n\t\tif (cellEl.offsetLeft < leftEdge) {\n\n\t\t\tthis.table.rowManager.element.scrollLeft -= leftEdge - cellEl.offsetLeft;\n\t\t} else {\n\t\t\tif (cellEl.offsetLeft + cellEl.offsetWidth > rightEdge) {\n\t\t\t\tthis.table.rowManager.element.scrollLeft += cellEl.offsetLeft + cellEl.offsetWidth - rightEdge;\n\t\t\t}\n\t\t}\n\t}\n};\n\nEdit.prototype.edit = function (cell, e, forceEdit) {\n\tvar self = this,\n\t allowEdit = true,\n\t rendered = function rendered() {},\n\t element = cell.getElement(),\n\t cellEditor,\n\t component,\n\t params;\n\n\t//prevent editing if another cell is refusing to leave focus (eg. validation fail)\n\tif (this.currentCell) {\n\t\tif (!this.invalidEdit) {\n\t\t\tthis.cancelEdit();\n\t\t}\n\t\treturn;\n\t}\n\n\t//handle successfull value change\n\tfunction success(value) {\n\t\tif (self.currentCell === cell) {\n\t\t\tvar valid = true;\n\n\t\t\tif (cell.column.modules.validate && self.table.modExists(\"validate\") && self.table.options.validationMode != \"manual\") {\n\t\t\t\tvalid = self.table.modules.validate.validate(cell.column.modules.validate, cell, value);\n\t\t\t}\n\n\t\t\tif (valid === true || self.table.options.validationMode === \"highlight\") {\n\t\t\t\tself.clearEditor();\n\n\t\t\t\tif (!cell.modules.edit) {\n\t\t\t\t\tcell.modules.edit = {};\n\t\t\t\t}\n\n\t\t\t\tcell.modules.edit.edited = true;\n\n\t\t\t\tif (self.editedCells.indexOf(cell) == -1) {\n\t\t\t\t\tself.editedCells.push(cell);\n\t\t\t\t}\n\n\t\t\t\tcell.setValue(value, true);\n\n\t\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\t\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\n\t\t\t\t}\n\n\t\t\t\tif (valid !== true) {\n\t\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\n\t\t\t\t\tself.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tself.invalidEdit = true;\n\t\t\t\telement.classList.add(\"tabulator-validation-fail\");\n\t\t\t\tself.focusCellNoEvent(cell, true);\n\t\t\t\trendered();\n\t\t\t\tself.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\t// console.warn(\"Edit Success Error - cannot call success on a cell that is no longer being edited\");\n\t\t}\n\t}\n\n\t//handle aborted edit\n\tfunction cancel() {\n\t\tif (self.currentCell === cell) {\n\t\t\tself.cancelEdit();\n\n\t\t\tif (self.table.options.dataTree && self.table.modExists(\"dataTree\")) {\n\t\t\t\tself.table.modules.dataTree.checkForRestyle(cell);\n\t\t\t}\n\t\t} else {\n\t\t\t// console.warn(\"Edit Success Error - cannot call cancel on a cell that is no longer being edited\");\n\t\t}\n\t}\n\n\tfunction onRendered(callback) {\n\t\trendered = callback;\n\t}\n\n\tif (!cell.column.modules.edit.blocked) {\n\t\tif (e) {\n\t\t\te.stopPropagation();\n\t\t}\n\n\t\tswitch (_typeof(cell.column.modules.edit.check)) {\n\t\t\tcase \"function\":\n\t\t\t\tallowEdit = cell.column.modules.edit.check(cell.getComponent());\n\t\t\t\tbreak;\n\n\t\t\tcase \"boolean\":\n\t\t\t\tallowEdit = cell.column.modules.edit.check;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (allowEdit || forceEdit) {\n\n\t\t\tself.cancelEdit();\n\n\t\t\tself.currentCell = cell;\n\n\t\t\tthis.focusScrollAdjust(cell);\n\n\t\t\tcomponent = cell.getComponent();\n\n\t\t\tif (this.mouseClick) {\n\t\t\t\tthis.mouseClick = false;\n\n\t\t\t\tif (cell.column.cellEvents.cellClick) {\n\t\t\t\t\tcell.column.cellEvents.cellClick.call(this.table, e, component);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (cell.column.cellEvents.cellEditing) {\n\t\t\t\tcell.column.cellEvents.cellEditing.call(this.table, component);\n\t\t\t}\n\n\t\t\tself.table.options.cellEditing.call(this.table, component);\n\n\t\t\tparams = typeof cell.column.modules.edit.params === \"function\" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;\n\n\t\t\tcellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);\n\n\t\t\t//if editor returned, add to DOM, if false, abort edit\n\t\t\tif (cellEditor !== false) {\n\n\t\t\t\tif (cellEditor instanceof Node) {\n\t\t\t\t\telement.classList.add(\"tabulator-editing\");\n\t\t\t\t\tcell.row.getElement().classList.add(\"tabulator-row-editing\");\n\t\t\t\t\twhile (element.firstChild) {\n\t\t\t\t\t\telement.removeChild(element.firstChild);\n\t\t\t\t\t}element.appendChild(cellEditor);\n\n\t\t\t\t\t//trigger onRendered Callback\n\t\t\t\t\trendered();\n\n\t\t\t\t\t//prevent editing from triggering rowClick event\n\t\t\t\t\tvar children = element.children;\n\n\t\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\t\tchildren[i].addEventListener(\"click\", function (e) {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Edit Error - Editor should return an instance of Node, the editor returned:\", cellEditor);\n\t\t\t\t\telement.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telement.blur();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\tthis.mouseClick = false;\n\t\t\telement.blur();\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tthis.mouseClick = false;\n\t\telement.blur();\n\t\treturn false;\n\t}\n};\n\nEdit.prototype.maskInput = function (el, options) {\n\tvar mask = options.mask,\n\t maskLetter = typeof options.maskLetterChar !== \"undefined\" ? options.maskLetterChar : \"A\",\n\t maskNumber = typeof options.maskNumberChar !== \"undefined\" ? options.maskNumberChar : \"9\",\n\t maskWildcard = typeof options.maskWildcardChar !== \"undefined\" ? options.maskWildcardChar : \"*\",\n\t success = false;\n\n\tfunction fillSymbols(index) {\n\t\tvar symbol = mask[index];\n\t\tif (typeof symbol !== \"undefined\" && symbol !== maskWildcard && symbol !== maskLetter && symbol !== maskNumber) {\n\t\t\tel.value = el.value + \"\" + symbol;\n\t\t\tfillSymbols(index + 1);\n\t\t}\n\t}\n\n\tel.addEventListener(\"keydown\", function (e) {\n\t\tvar index = el.value.length,\n\t\t char = e.key;\n\n\t\tif (e.keyCode > 46) {\n\t\t\tif (index >= mask.length) {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\tsuccess = false;\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\tswitch (mask[index]) {\n\t\t\t\t\tcase maskLetter:\n\t\t\t\t\t\tif (char.toUpperCase() == char.toLowerCase()) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tsuccess = false;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskNumber:\n\t\t\t\t\t\tif (isNaN(char)) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tsuccess = false;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase maskWildcard:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (char !== mask[index]) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tsuccess = false;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsuccess = true;\n\t\t}\n\n\t\treturn;\n\t});\n\n\tel.addEventListener(\"keyup\", function (e) {\n\t\tif (e.keyCode > 46) {\n\t\t\tif (options.maskAutoFill) {\n\t\t\t\tfillSymbols(el.value.length);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (!el.placeholder) {\n\t\tel.placeholder = mask;\n\t}\n\n\tif (options.maskAutoFill) {\n\t\tfillSymbols(el.value.length);\n\t}\n};\n\nEdit.prototype.getEditedCells = function () {\n\tvar output = [];\n\n\tthis.editedCells.forEach(function (cell) {\n\t\toutput.push(cell.getComponent());\n\t});\n\n\treturn output;\n};\n\nEdit.prototype.clearEdited = function (cell) {\n\tvar editIndex;\n\n\tif (cell.modules.edit && cell.modules.edit.edited) {\n\t\tcell.modules.edit.edited = false;\n\n\t\tif (cell.modules.validate) {\n\t\t\tcell.modules.validate.invalid = false;\n\t\t}\n\t}\n\n\teditIndex = this.editedCells.indexOf(cell);\n\n\tif (editIndex > -1) {\n\t\tthis.editedCells.splice(editIndex, 1);\n\t}\n};\n\n//default data editors\nEdit.prototype.editors = {\n\n\t//input element\n\tinput: function input(cell, onRendered, success, cancel, editorParams) {\n\n\t\t//create and style input\n\t\tvar cellValue = cell.getValue(),\n\t\t input = document.createElement(\"input\");\n\n\t\tinput.setAttribute(\"type\", editorParams.search ? \"search\" : \"text\");\n\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinput.value = typeof cellValue !== \"undefined\" ? cellValue : \"\";\n\n\t\tonRendered(function () {\n\t\t\tinput.focus({ preventScroll: true });\n\t\t\tinput.style.height = \"100%\";\n\t\t});\n\n\t\tfunction onChange(e) {\n\t\t\tif ((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\" || input.value !== cellValue) {\n\t\t\t\tif (success(input.value)) {\n\t\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcancel();\n\t\t\t}\n\t\t}\n\n\t\t//submit new value on blur or change\n\t\tinput.addEventListener(\"change\", onChange);\n\t\tinput.addEventListener(\"blur\", onChange);\n\n\t\t//submit new value on enter\n\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\tswitch (e.keyCode) {\n\t\t\t\t// case 9:\n\t\t\t\tcase 13:\n\t\t\t\t\tonChange(e);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 27:\n\t\t\t\t\tcancel();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 35:\n\t\t\t\tcase 36:\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tif (editorParams.mask) {\n\t\t\tthis.table.modules.edit.maskInput(input, editorParams);\n\t\t}\n\n\t\treturn input;\n\t},\n\n\t//resizable text area element\n\ttextarea: function textarea(cell, onRendered, success, cancel, editorParams) {\n\t\tvar self = this,\n\t\t cellValue = cell.getValue(),\n\t\t vertNav = editorParams.verticalNavigation || \"hybrid\",\n\t\t value = String(cellValue !== null && typeof cellValue !== \"undefined\" ? cellValue : \"\"),\n\t\t count = (value.match(/(?:\\r\\n|\\r|\\n)/g) || []).length + 1,\n\t\t input = document.createElement(\"textarea\"),\n\t\t scrollHeight = 0;\n\n\t\t//create and style input\n\t\tinput.style.display = \"block\";\n\t\tinput.style.padding = \"2px\";\n\t\tinput.style.height = \"100%\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\tinput.style.whiteSpace = \"pre-wrap\";\n\t\tinput.style.resize = \"none\";\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinput.value = value;\n\n\t\tonRendered(function () {\n\t\t\tinput.focus({ preventScroll: true });\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\tinput.scrollHeight;\n\t\t\tinput.style.height = input.scrollHeight + \"px\";\n\t\t\tcell.getRow().normalizeHeight();\n\t\t});\n\n\t\tfunction onChange(e) {\n\n\t\t\tif ((cellValue === null || typeof cellValue === \"undefined\") && input.value !== \"\" || input.value !== cellValue) {\n\n\t\t\t\tif (success(input.value)) {\n\t\t\t\t\tcellValue = input.value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t\t}, 300);\n\t\t\t} else {\n\t\t\t\tcancel();\n\t\t\t}\n\t\t}\n\n\t\t//submit new value on blur or change\n\t\tinput.addEventListener(\"change\", onChange);\n\t\tinput.addEventListener(\"blur\", onChange);\n\n\t\tinput.addEventListener(\"keyup\", function () {\n\n\t\t\tinput.style.height = \"\";\n\n\t\t\tvar heightNow = input.scrollHeight;\n\n\t\t\tinput.style.height = heightNow + \"px\";\n\n\t\t\tif (heightNow != scrollHeight) {\n\t\t\t\tscrollHeight = heightNow;\n\t\t\t\tcell.getRow().normalizeHeight();\n\t\t\t}\n\t\t});\n\n\t\tinput.addEventListener(\"keydown\", function (e) {\n\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase 27:\n\t\t\t\t\tcancel();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 38:\n\t\t\t\t\t//up arrow\n\t\t\t\t\tif (vertNav == \"editor\" || vertNav == \"hybrid\" && input.selectionStart) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 40:\n\t\t\t\t\t//down arrow\n\t\t\t\t\tif (vertNav == \"editor\" || vertNav == \"hybrid\" && input.selectionStart !== input.value.length) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 35:\n\t\t\t\tcase 36:\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tif (editorParams.mask) {\n\t\t\tthis.table.modules.edit.maskInput(input, editorParams);\n\t\t}\n\n\t\treturn input;\n\t},\n\n\t//input element with type of number\n\tnumber: function number(cell, onRendered, success, cancel, editorParams) {\n\n\t\tvar cellValue = cell.getValue(),\n\t\t vertNav = editorParams.verticalNavigation || \"editor\",\n\t\t input = document.createElement(\"input\");\n\n\t\tinput.setAttribute(\"type\", \"number\");\n\n\t\tif (typeof editorParams.max != \"undefined\") {\n\t\t\tinput.setAttribute(\"max\", editorParams.max);\n\t\t}\n\n\t\tif (typeof editorParams.min != \"undefined\") {\n\t\t\tinput.setAttribute(\"min\", editorParams.min);\n\t\t}\n\n\t\tif (typeof editorParams.step != \"undefined\") {\n\t\t\tinput.setAttribute(\"step\", editorParams.step);\n\t\t}\n\n\t\t//create and style input\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinput.value = cellValue;\n\n\t\tvar blurFunc = function blurFunc(e) {\n\t\t\tonChange();\n\t\t};\n\n\t\tonRendered(function () {\n\t\t\t//submit new value on blur\n\t\t\tinput.removeEventListener(\"blur\", blurFunc);\n\n\t\t\tinput.focus({ preventScroll: true });\n\t\t\tinput.style.height = \"100%\";\n\n\t\t\t//submit new value on blur\n\t\t\tinput.addEventListener(\"blur\", blurFunc);\n\t\t});\n\n\t\tfunction onChange() {\n\t\t\tvar value = input.value;\n\n\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\tvalue = Number(value);\n\t\t\t}\n\n\t\t\tif (value !== cellValue) {\n\t\t\t\tif (success(value)) {\n\t\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcancel();\n\t\t\t}\n\t\t}\n\n\t\t//submit new value on enter\n\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase 13:\n\t\t\t\t\t// case 9:\n\t\t\t\t\tonChange();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 27:\n\t\t\t\t\tcancel();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 38: //up arrow\n\t\t\t\tcase 40:\n\t\t\t\t\t//down arrow\n\t\t\t\t\tif (vertNav == \"editor\") {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 35:\n\t\t\t\tcase 36:\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tif (editorParams.mask) {\n\t\t\tthis.table.modules.edit.maskInput(input, editorParams);\n\t\t}\n\n\t\treturn input;\n\t},\n\n\t//input element with type of number\n\trange: function range(cell, onRendered, success, cancel, editorParams) {\n\n\t\tvar cellValue = cell.getValue(),\n\t\t input = document.createElement(\"input\");\n\n\t\tinput.setAttribute(\"type\", \"range\");\n\n\t\tif (typeof editorParams.max != \"undefined\") {\n\t\t\tinput.setAttribute(\"max\", editorParams.max);\n\t\t}\n\n\t\tif (typeof editorParams.min != \"undefined\") {\n\t\t\tinput.setAttribute(\"min\", editorParams.min);\n\t\t}\n\n\t\tif (typeof editorParams.step != \"undefined\") {\n\t\t\tinput.setAttribute(\"step\", editorParams.step);\n\t\t}\n\n\t\t//create and style input\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinput.value = cellValue;\n\n\t\tonRendered(function () {\n\t\t\tinput.focus({ preventScroll: true });\n\t\t\tinput.style.height = \"100%\";\n\t\t});\n\n\t\tfunction onChange() {\n\t\t\tvar value = input.value;\n\n\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\tvalue = Number(value);\n\t\t\t}\n\n\t\t\tif (value != cellValue) {\n\t\t\t\tif (success(value)) {\n\t\t\t\t\tcellValue = value; //persist value if successfully validated incase editor is used as header filter\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcancel();\n\t\t\t}\n\t\t}\n\n\t\t//submit new value on blur\n\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\tonChange();\n\t\t});\n\n\t\t//submit new value on enter\n\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase 13:\n\t\t\t\t\t// case 9:\n\t\t\t\t\tonChange();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 27:\n\t\t\t\t\tcancel();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\treturn input;\n\t},\n\n\t//select\n\tselect: function select(cell, onRendered, success, cancel, editorParams) {\n\t\tvar _this53 = this;\n\n\t\tvar self = this,\n\t\t cellEl = cell.getElement(),\n\t\t initialValue = cell.getValue(),\n\t\t vertNav = editorParams.verticalNavigation || \"editor\",\n\t\t initialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? Array.isArray(initialValue) ? initialValue : [initialValue] : typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : [],\n\t\t input = document.createElement(\"input\"),\n\t\t listEl = document.createElement(\"div\"),\n\t\t multiselect = editorParams.multiselect,\n\t\t dataItems = [],\n\t\t currentItem = {},\n\t\t displayItems = [],\n\t\t currentItems = [],\n\t\t blurable = true,\n\t\t blockListShow = false,\n\t\t searchWord = \"\",\n\t\t searchWordTimeout = null;\n\n\t\tif (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === \"object\" && !editorParams.values) {\n\t\t\tconsole.warn(\"DEPRECATION WARNING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object\");\n\t\t\teditorParams = { values: editorParams };\n\t\t}\n\n\t\tfunction getUniqueColumnValues(field) {\n\t\t\tvar output = {},\n\t\t\t data = self.table.getData(),\n\t\t\t column;\n\n\t\t\tif (field) {\n\t\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\n\t\t\t} else {\n\t\t\t\tcolumn = cell.getColumn()._getSelf();\n\t\t\t}\n\n\t\t\tif (column) {\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar val = column.getFieldValue(row);\n\n\t\t\t\t\tif (val !== null && typeof val !== \"undefined\" && val !== \"\") {\n\t\t\t\t\t\toutput[val] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"unable to find matching column to create select lookup list:\", field);\n\t\t\t}\n\n\t\t\treturn Object.keys(output);\n\t\t}\n\n\t\tfunction parseItems(inputValues, curentValues) {\n\t\t\tvar dataList = [];\n\t\t\tvar displayList = [];\n\n\t\t\tfunction processComplexListItem(item) {\n\t\t\t\tvar item = {\n\t\t\t\t\tlabel: item.label,\n\t\t\t\t\tvalue: item.value,\n\t\t\t\t\titemParams: item.itemParams,\n\t\t\t\t\telementAttributes: item.elementAttributes,\n\t\t\t\t\telement: false\n\t\t\t\t};\n\n\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\n\t\t\t\t// \tsetCurrentItem(item);\n\t\t\t\t// }\n\n\t\t\t\tif (curentValues.indexOf(item.value) > -1) {\n\t\t\t\t\tsetItem(item);\n\t\t\t\t}\n\n\t\t\t\tdataList.push(item);\n\t\t\t\tdisplayList.push(item);\n\n\t\t\t\treturn item;\n\t\t\t}\n\n\t\t\tif (typeof inputValues == \"function\") {\n\t\t\t\tinputValues = inputValues(cell);\n\t\t\t}\n\n\t\t\tif (Array.isArray(inputValues)) {\n\t\t\t\tinputValues.forEach(function (value) {\n\t\t\t\t\tvar item;\n\n\t\t\t\t\tif ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === \"object\") {\n\n\t\t\t\t\t\tif (value.options) {\n\t\t\t\t\t\t\titem = {\n\t\t\t\t\t\t\t\tlabel: value.label,\n\t\t\t\t\t\t\t\tgroup: true,\n\t\t\t\t\t\t\t\titemParams: value.itemParams,\n\t\t\t\t\t\t\t\telementAttributes: value.elementAttributes,\n\t\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tdisplayList.push(item);\n\n\t\t\t\t\t\t\tvalue.options.forEach(function (item) {\n\t\t\t\t\t\t\t\tprocessComplexListItem(item);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tprocessComplexListItem(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\titem = {\n\t\t\t\t\t\t\tlabel: value,\n\t\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\t\telement: false\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\n\t\t\t\t\t\t// \tsetCurrentItem(item);\n\t\t\t\t\t\t// }\n\n\t\t\t\t\t\tif (curentValues.indexOf(item.value) > -1) {\n\t\t\t\t\t\t\tsetItem(item);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataList.push(item);\n\t\t\t\t\t\tdisplayList.push(item);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tfor (var key in inputValues) {\n\t\t\t\t\tvar item = {\n\t\t\t\t\t\tlabel: inputValues[key],\n\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\telement: false\n\t\t\t\t\t};\n\n\t\t\t\t\t// if(item.value === curentValue || (!isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue))){\n\t\t\t\t\t// \tsetCurrentItem(item);\n\t\t\t\t\t// }\n\n\t\t\t\t\tif (curentValues.indexOf(item.value) > -1) {\n\t\t\t\t\t\tsetItem(item);\n\t\t\t\t\t}\n\n\t\t\t\t\tdataList.push(item);\n\t\t\t\t\tdisplayList.push(item);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (editorParams.sortValuesList) {\n\t\t\t\tdataList.sort(function (a, b) {\n\t\t\t\t\treturn a.label < b.label ? -1 : a.label > b.label ? 1 : 0;\n\t\t\t\t});\n\n\t\t\t\tdisplayList.sort(function (a, b) {\n\t\t\t\t\treturn a.label < b.label ? -1 : a.label > b.label ? 1 : 0;\n\t\t\t\t});\n\n\t\t\t\tif (editorParams.sortValuesList !== \"asc\") {\n\t\t\t\t\tdataList.reverse();\n\t\t\t\t\tdisplayList.reverse();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdataItems = dataList;\n\t\t\tdisplayItems = displayList;\n\n\t\t\tfillList();\n\t\t}\n\n\t\tfunction fillList() {\n\t\t\twhile (listEl.firstChild) {\n\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t}displayItems.forEach(function (item) {\n\n\t\t\t\tvar el = item.element;\n\n\t\t\t\tif (!el) {\n\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\titem.label = editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label, cell, el, item.itemParams) : item.label;\n\t\t\t\t\tif (item.group) {\n\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-group\");\n\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\n\t\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\t\tel.innerHTML = item.label === \"\" ? \" \" : item.label;\n\n\t\t\t\t\t\tel.addEventListener(\"click\", function () {\n\t\t\t\t\t\t\tblockListShow = true;\n\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tblockListShow = false;\n\t\t\t\t\t\t\t}, 10);\n\n\t\t\t\t\t\t\t// setCurrentItem(item);\n\t\t\t\t\t\t\t// chooseItem();\n\t\t\t\t\t\t\tif (multiselect) {\n\t\t\t\t\t\t\t\ttoggleItem(item);\n\t\t\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tchooseItem(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// if(item === currentItem){\n\t\t\t\t\t\t// \tel.classList.add(\"active\");\n\t\t\t\t\t\t// }\n\n\t\t\t\t\t\tif (currentItems.indexOf(item) > -1) {\n\t\t\t\t\t\t\tel.classList.add(\"active\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (item.elementAttributes && _typeof(item.elementAttributes) == \"object\") {\n\t\t\t\t\t\tfor (var key in item.elementAttributes) {\n\t\t\t\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\t\t\t\tel.setAttribute(key, input.getAttribute(key) + item.elementAttributes[\"+\" + key]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tel.setAttribute(key, item.elementAttributes[key]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tel.addEventListener(\"mousedown\", function () {\n\t\t\t\t\t\tblurable = false;\n\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t\t}, 10);\n\t\t\t\t\t});\n\n\t\t\t\t\titem.element = el;\n\t\t\t\t}\n\n\t\t\t\tlistEl.appendChild(el);\n\t\t\t});\n\t\t}\n\n\t\tfunction setCurrentItem(item, active) {\n\n\t\t\tif (!multiselect && currentItem && currentItem.element) {\n\t\t\t\tcurrentItem.element.classList.remove(\"active\");\n\t\t\t}\n\n\t\t\tif (currentItem && currentItem.element) {\n\t\t\t\tcurrentItem.element.classList.remove(\"focused\");\n\t\t\t}\n\n\t\t\tcurrentItem = item;\n\n\t\t\tif (item.element) {\n\t\t\t\titem.element.classList.add(\"focused\");\n\t\t\t\tif (active) {\n\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (item && item.element && item.element.scrollIntoView) {\n\t\t\t\titem.element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });\n\t\t\t}\n\t\t}\n\n\t\t// function chooseItem(){\n\t\t// \thideList();\n\n\t\t// \tif(initialValue !== currentItem.value){\n\t\t// \t\tinitialValue = currentItem.value;\n\t\t// \t\tsuccess(currentItem.value);\n\t\t// \t}else{\n\t\t// \t\tcancel();\n\t\t// \t}\n\t\t// }\n\n\t\tfunction setItem(item) {\n\t\t\tvar index = currentItems.indexOf(item);\n\n\t\t\tif (index == -1) {\n\t\t\t\tcurrentItems.push(item);\n\t\t\t\tsetCurrentItem(item, true);\n\t\t\t}\n\n\t\t\tfillInput();\n\t\t}\n\n\t\tfunction unsetItem(index) {\n\t\t\tvar item = currentItems[index];\n\n\t\t\tif (index > -1) {\n\t\t\t\tcurrentItems.splice(index, 1);\n\t\t\t\tif (item.element) {\n\t\t\t\t\titem.element.classList.remove(\"active\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction toggleItem(item) {\n\t\t\tif (!item) {\n\t\t\t\titem = currentItem;\n\t\t\t}\n\n\t\t\tvar index = currentItems.indexOf(item);\n\n\t\t\tif (index > -1) {\n\t\t\t\tunsetItem(index);\n\t\t\t} else {\n\t\t\t\tif (multiselect !== true && currentItems.length >= multiselect) {\n\t\t\t\t\tunsetItem(0);\n\t\t\t\t}\n\n\t\t\t\tsetItem(item);\n\t\t\t}\n\n\t\t\tfillInput();\n\t\t}\n\n\t\tfunction chooseItem(item) {\n\t\t\thideList();\n\n\t\t\tif (!item) {\n\t\t\t\titem = currentItem;\n\t\t\t}\n\n\t\t\tif (item) {\n\t\t\t\tinput.value = item.label;\n\t\t\t\tsuccess(item.value);\n\t\t\t}\n\n\t\t\tinitialDisplayValue = [item.value];\n\t\t}\n\n\t\tfunction chooseItems(silent) {\n\t\t\tif (!silent) {\n\t\t\t\thideList();\n\t\t\t}\n\n\t\t\tvar output = [];\n\n\t\t\tcurrentItems.forEach(function (item) {\n\t\t\t\toutput.push(item.value);\n\t\t\t});\n\n\t\t\tinitialDisplayValue = output;\n\n\t\t\tsuccess(output);\n\t\t}\n\n\t\tfunction fillInput() {\n\t\t\tvar output = [];\n\n\t\t\tcurrentItems.forEach(function (item) {\n\t\t\t\toutput.push(item.label);\n\t\t\t});\n\n\t\t\tinput.value = output.join(\", \");\n\n\t\t\tif (self.currentCell === false) {\n\t\t\t\tchooseItems(true);\n\t\t\t}\n\t\t}\n\n\t\tfunction unsetItems() {\n\n\t\t\tvar len = currentItems.length;\n\n\t\t\tfor (var _i9 = 0; _i9 < len; _i9++) {\n\t\t\t\tunsetItem(0);\n\t\t\t}\n\t\t}\n\n\t\tfunction cancelItem() {\n\t\t\thideList();\n\t\t\tcancel();\n\t\t}\n\n\t\tfunction showList() {\n\t\t\tcurrentItems = [];\n\n\t\t\tif (!listEl.parentNode) {\n\t\t\t\tif (editorParams.values === true) {\n\t\t\t\t\tparseItems(getUniqueColumnValues(), initialDisplayValue);\n\t\t\t\t} else if (typeof editorParams.values === \"string\") {\n\t\t\t\t\tparseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);\n\t\t\t\t} else {\n\t\t\t\t\tparseItems(editorParams.values || [], initialDisplayValue);\n\t\t\t\t}\n\n\t\t\t\tvar offset = Tabulator.prototype.helpers.elOffset(cellEl);\n\n\t\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\n\n\t\t\t\tlistEl.style.top = offset.top + cellEl.offsetHeight + \"px\";\n\t\t\t\tlistEl.style.left = offset.left + \"px\";\n\n\t\t\t\tlistEl.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\tblurable = false;\n\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t}, 10);\n\t\t\t\t});\n\n\t\t\t\tdocument.body.appendChild(listEl);\n\t\t\t}\n\t\t}\n\n\t\tfunction hideList() {\n\t\t\tif (listEl.parentNode) {\n\t\t\t\tlistEl.parentNode.removeChild(listEl);\n\t\t\t}\n\n\t\t\tremoveScrollListener();\n\t\t}\n\n\t\tfunction removeScrollListener() {\n\t\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\n\t\t}\n\n\t\tfunction scrollTovalue(char) {\n\n\t\t\tclearTimeout(searchWordTimeout);\n\n\t\t\tvar character = String.fromCharCode(event.keyCode).toLowerCase();\n\t\t\tsearchWord += character.toLowerCase();\n\n\t\t\tvar match = dataItems.find(function (item) {\n\t\t\t\treturn typeof item.label !== \"undefined\" && item.label.toLowerCase().startsWith(searchWord);\n\t\t\t});\n\n\t\t\tif (match) {\n\t\t\t\tsetCurrentItem(match, !multiselect);\n\t\t\t}\n\n\t\t\tsearchWordTimeout = setTimeout(function () {\n\t\t\t\tsearchWord = \"\";\n\t\t\t}, 800);\n\t\t}\n\n\t\t//style input\n\t\tinput.setAttribute(\"type\", \"text\");\n\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\t\tinput.style.cursor = \"default\";\n\t\tinput.readOnly = this.currentCell != false;\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinput.value = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : \"\";\n\n\t\t// if(editorParams.values === true){\n\t\t// \tparseItems(getUniqueColumnValues(), initialValue);\n\t\t// }else if(typeof editorParams.values === \"string\"){\n\t\t// \tparseItems(getUniqueColumnValues(editorParams.values), initialValue);\n\t\t// }else{\n\t\t// \tparseItems(editorParams.values || [], initialValue);\n\t\t// }\n\n\t\tinput.addEventListener(\"search\", function (e) {\n\t\t\tif (!input.value) {\n\t\t\t\tunsetItems();\n\t\t\t\tchooseItems();\n\t\t\t}\n\t\t});\n\n\t\t//allow key based navigation\n\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\tvar index;\n\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase 38:\n\t\t\t\t\t//up arrow\n\t\t\t\t\tindex = dataItems.indexOf(currentItem);\n\n\t\t\t\t\tif (vertNav == \"editor\" || vertNav == \"hybrid\" && index) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\tsetCurrentItem(dataItems[index - 1], !multiselect);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 40:\n\t\t\t\t\t//down arrow\n\t\t\t\t\tindex = dataItems.indexOf(currentItem);\n\n\t\t\t\t\tif (vertNav == \"editor\" || vertNav == \"hybrid\" && index < dataItems.length - 1) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tif (index < dataItems.length - 1) {\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\tsetCurrentItem(dataItems[0], !multiselect);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetCurrentItem(dataItems[index + 1], !multiselect);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 37: //left arrow\n\t\t\t\tcase 39:\n\t\t\t\t\t//right arrow\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 13:\n\t\t\t\t\t//enter\n\t\t\t\t\t// chooseItem();\n\n\t\t\t\t\tif (multiselect) {\n\t\t\t\t\t\ttoggleItem();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 27:\n\t\t\t\t\t//escape\n\t\t\t\t\tcancelItem();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 9:\n\t\t\t\t\t//tab\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (self.currentCell === false) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (e.keyCode >= 38 && e.keyCode <= 90) {\n\t\t\t\t\t\tscrollTovalue(e.keyCode);\n\t\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\tif (blurable) {\n\t\t\t\tif (multiselect) {\n\t\t\t\t\tchooseItems();\n\t\t\t\t} else {\n\t\t\t\t\tcancelItem();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinput.addEventListener(\"focus\", function (e) {\n\t\t\tif (!blockListShow) {\n\t\t\t\tshowList();\n\t\t\t}\n\t\t});\n\n\t\t//style list element\n\t\tlistEl = document.createElement(\"div\");\n\t\tlistEl.classList.add(\"tabulator-edit-select-list\");\n\n\t\tonRendered(function () {\n\t\t\tinput.style.height = \"100%\";\n\t\t\tinput.focus({ preventScroll: true });\n\t\t});\n\n\t\tsetTimeout(function () {\n\t\t\t_this53.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\n\t\t}, 10);\n\n\t\treturn input;\n\t},\n\n\t//autocomplete\n\tautocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {\n\t\tvar _this54 = this;\n\n\t\tvar self = this,\n\t\t cellEl = cell.getElement(),\n\t\t initialValue = cell.getValue(),\n\t\t vertNav = editorParams.verticalNavigation || \"editor\",\n\t\t initialDisplayValue = typeof initialValue !== \"undefined\" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== \"undefined\" ? editorParams.defaultValue : \"\",\n\t\t input = document.createElement(\"input\"),\n\t\t listEl = document.createElement(\"div\"),\n\t\t allItems = [],\n\t\t displayItems = [],\n\t\t values = [],\n\t\t currentItem = false,\n\t\t blurable = true,\n\t\t uniqueColumnValues = false;\n\n\t\t//style input\n\t\tinput.setAttribute(\"type\", \"search\");\n\n\t\tinput.style.padding = \"4px\";\n\t\tinput.style.width = \"100%\";\n\t\tinput.style.boxSizing = \"border-box\";\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//style list element\n\t\tlistEl.classList.add(\"tabulator-edit-select-list\");\n\n\t\tlistEl.addEventListener(\"mousedown\", function (e) {\n\t\t\tblurable = false;\n\n\t\t\tsetTimeout(function () {\n\t\t\t\tblurable = true;\n\t\t\t}, 10);\n\t\t});\n\n\t\tfunction genUniqueColumnValues() {\n\t\t\tif (editorParams.values === true) {\n\t\t\t\tuniqueColumnValues = getUniqueColumnValues();\n\t\t\t} else if (typeof editorParams.values === \"string\") {\n\t\t\t\tuniqueColumnValues = getUniqueColumnValues(editorParams.values);\n\t\t\t}\n\t\t}\n\n\t\tfunction getUniqueColumnValues(field) {\n\t\t\tvar output = {},\n\t\t\t data = self.table.getData(),\n\t\t\t column;\n\n\t\t\tif (field) {\n\t\t\t\tcolumn = self.table.columnManager.getColumnByField(field);\n\t\t\t} else {\n\t\t\t\tcolumn = cell.getColumn()._getSelf();\n\t\t\t}\n\n\t\t\tif (column) {\n\t\t\t\tdata.forEach(function (row) {\n\t\t\t\t\tvar val = column.getFieldValue(row);\n\n\t\t\t\t\tif (val !== null && typeof val !== \"undefined\" && val !== \"\") {\n\t\t\t\t\t\toutput[val] = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (editorParams.sortValuesList) {\n\t\t\t\t\tif (editorParams.sortValuesList == \"asc\") {\n\t\t\t\t\t\toutput = Object.keys(output).sort();\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput = Object.keys(output).sort().reverse();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toutput = Object.keys(output);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"unable to find matching column to create autocomplete lookup list:\", field);\n\t\t\t}\n\n\t\t\treturn output;\n\t\t}\n\n\t\tfunction filterList(term, intialLoad) {\n\t\t\tvar matches = [],\n\t\t\t values,\n\t\t\t items,\n\t\t\t searchEl;\n\n\t\t\t//lookup base values list\n\t\t\tif (uniqueColumnValues) {\n\t\t\t\tvalues = uniqueColumnValues;\n\t\t\t} else {\n\t\t\t\tvalues = editorParams.values || [];\n\t\t\t}\n\n\t\t\tif (editorParams.searchFunc) {\n\t\t\t\tmatches = editorParams.searchFunc(term, values);\n\n\t\t\t\tif (matches instanceof Promise) {\n\n\t\t\t\t\taddNotice(typeof editorParams.searchingPlaceholder !== \"undefined\" ? editorParams.searchingPlaceholder : \"Searching...\");\n\n\t\t\t\t\tmatches.then(function (result) {\n\t\t\t\t\t\tfillListIfNotEmpty(parseItems(result), intialLoad);\n\t\t\t\t\t}).catch(function (err) {\n\t\t\t\t\t\tconsole.err(\"error in autocomplete search promise:\", err);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfillListIfNotEmpty(parseItems(matches), intialLoad);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\titems = parseItems(values);\n\n\t\t\t\tif (term === \"\") {\n\t\t\t\t\tif (editorParams.showListOnEmpty) {\n\t\t\t\t\t\tmatches = items;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\titems.forEach(function (item) {\n\t\t\t\t\t\tif (item.value !== null || typeof item.value !== \"undefined\") {\n\t\t\t\t\t\t\tif (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {\n\t\t\t\t\t\t\t\tmatches.push(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfillListIfNotEmpty(matches, intialLoad);\n\t\t\t}\n\t\t}\n\n\t\tfunction addNotice(notice) {\n\t\t\tvar searchEl = document.createElement(\"div\");\n\n\t\t\tclearList();\n\n\t\t\tif (notice !== false) {\n\t\t\t\tsearchEl.classList.add(\"tabulator-edit-select-list-notice\");\n\t\t\t\tsearchEl.tabIndex = 0;\n\n\t\t\t\tif (notice instanceof Node) {\n\t\t\t\t\tsearchEl.appendChild(notice);\n\t\t\t\t} else {\n\t\t\t\t\tsearchEl.innerHTML = notice;\n\t\t\t\t}\n\n\t\t\t\tlistEl.appendChild(searchEl);\n\t\t\t}\n\t\t}\n\n\t\tfunction parseItems(inputValues) {\n\t\t\tvar itemList = [];\n\n\t\t\tif (Array.isArray(inputValues)) {\n\t\t\t\tinputValues.forEach(function (value) {\n\n\t\t\t\t\tvar item = {};\n\n\t\t\t\t\tif ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === \"object\") {\n\t\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value.value, value.label) : value.label;\n\t\t\t\t\t\titem.value = value.value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\titem.title = editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value;\n\t\t\t\t\t\titem.value = value;\n\t\t\t\t\t}\n\n\t\t\t\t\titemList.push(item);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tfor (var key in inputValues) {\n\t\t\t\t\tvar item = {\n\t\t\t\t\t\ttitle: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],\n\t\t\t\t\t\tvalue: key\n\t\t\t\t\t};\n\n\t\t\t\t\titemList.push(item);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn itemList;\n\t\t}\n\n\t\tfunction clearList() {\n\t\t\twhile (listEl.firstChild) {\n\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t}\n\t\t}\n\n\t\tfunction fillListIfNotEmpty(items, intialLoad) {\n\t\t\tif (items.length) {\n\t\t\t\tfillList(items, intialLoad);\n\t\t\t} else {\n\t\t\t\tif (editorParams.emptyPlaceholder) {\n\t\t\t\t\taddNotice(editorParams.emptyPlaceholder);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction fillList(items, intialLoad) {\n\t\t\tvar current = false;\n\n\t\t\tclearList();\n\n\t\t\tdisplayItems = items;\n\n\t\t\tdisplayItems.forEach(function (item) {\n\t\t\t\tvar el = item.element;\n\n\t\t\t\tif (!el) {\n\t\t\t\t\tel = document.createElement(\"div\");\n\t\t\t\t\tel.classList.add(\"tabulator-edit-select-list-item\");\n\t\t\t\t\tel.tabIndex = 0;\n\t\t\t\t\tel.innerHTML = item.title;\n\n\t\t\t\t\tel.addEventListener(\"click\", function (e) {\n\t\t\t\t\t\tsetCurrentItem(item);\n\t\t\t\t\t\tchooseItem();\n\t\t\t\t\t});\n\n\t\t\t\t\tel.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\t\tblurable = false;\n\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\tblurable = true;\n\t\t\t\t\t\t}, 10);\n\t\t\t\t\t});\n\n\t\t\t\t\titem.element = el;\n\n\t\t\t\t\tif (intialLoad && item.value == initialValue) {\n\t\t\t\t\t\tinput.value = item.title;\n\t\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t\t\tcurrent = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (item === currentItem) {\n\t\t\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t\t\t\tcurrent = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tlistEl.appendChild(el);\n\t\t\t});\n\n\t\t\tif (!current) {\n\t\t\t\tsetCurrentItem(false);\n\t\t\t}\n\t\t}\n\n\t\tfunction chooseItem() {\n\t\t\thideList();\n\n\t\t\tif (currentItem) {\n\t\t\t\tif (initialValue !== currentItem.value) {\n\t\t\t\t\tinitialValue = currentItem.value;\n\t\t\t\t\tinput.value = currentItem.title;\n\t\t\t\t\tsuccess(currentItem.value);\n\t\t\t\t} else {\n\t\t\t\t\tcancel();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (editorParams.freetext) {\n\t\t\t\t\tinitialValue = input.value;\n\t\t\t\t\tsuccess(input.value);\n\t\t\t\t} else {\n\t\t\t\t\tif (editorParams.allowEmpty && input.value === \"\") {\n\t\t\t\t\t\tinitialValue = input.value;\n\t\t\t\t\t\tsuccess(input.value);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcancel();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfunction showList() {\n\t\t\tif (!listEl.parentNode) {\n\n\t\t\t\tconsole.log(\"show\", initialDisplayValue);\n\t\t\t\twhile (listEl.firstChild) {\n\t\t\t\t\tlistEl.removeChild(listEl.firstChild);\n\t\t\t\t}var offset = Tabulator.prototype.helpers.elOffset(cellEl);\n\n\t\t\t\tlistEl.style.minWidth = cellEl.offsetWidth + \"px\";\n\n\t\t\t\tlistEl.style.top = offset.top + cellEl.offsetHeight + \"px\";\n\t\t\t\tlistEl.style.left = offset.left + \"px\";\n\t\t\t\tdocument.body.appendChild(listEl);\n\t\t\t}\n\t\t}\n\n\t\tfunction setCurrentItem(item, showInputValue) {\n\t\t\tif (currentItem && currentItem.element) {\n\t\t\t\tcurrentItem.element.classList.remove(\"active\");\n\t\t\t}\n\n\t\t\tcurrentItem = item;\n\n\t\t\tif (item && item.element) {\n\t\t\t\titem.element.classList.add(\"active\");\n\t\t\t}\n\n\t\t\tif (item && item.element && item.element.scrollIntoView) {\n\t\t\t\titem.element.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });\n\t\t\t}\n\t\t}\n\n\t\tfunction hideList() {\n\t\t\tif (listEl.parentNode) {\n\t\t\t\tlistEl.parentNode.removeChild(listEl);\n\t\t\t}\n\n\t\t\tremoveScrollListener();\n\t\t}\n\n\t\tfunction cancelItem() {\n\t\t\thideList();\n\t\t\tcancel();\n\t\t}\n\n\t\tfunction removeScrollListener() {\n\t\t\tself.table.rowManager.element.removeEventListener(\"scroll\", cancelItem);\n\t\t}\n\n\t\t//allow key based navigation\n\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\tvar index;\n\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase 38:\n\t\t\t\t\t//up arrow\n\t\t\t\t\tindex = displayItems.indexOf(currentItem);\n\n\t\t\t\t\tif (vertNav == \"editor\" || vertNav == \"hybrid\" && index) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\tsetCurrentItem(displayItems[index - 1]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetCurrentItem(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 40:\n\t\t\t\t\t//down arrow\n\n\t\t\t\t\tindex = displayItems.indexOf(currentItem);\n\n\t\t\t\t\tif (vertNav == \"editor\" || vertNav == \"hybrid\" && index < displayItems.length - 1) {\n\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t\tif (index < displayItems.length - 1) {\n\t\t\t\t\t\t\tif (index == -1) {\n\t\t\t\t\t\t\t\tsetCurrentItem(displayItems[0]);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetCurrentItem(displayItems[index + 1]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 37: //left arrow\n\t\t\t\tcase 39:\n\t\t\t\t\t//right arrow\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t// e.preventDefault();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 13:\n\t\t\t\t\t//enter\n\t\t\t\t\tchooseItem();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 27:\n\t\t\t\t\t//escape\n\t\t\t\t\tcancelItem();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 36: //home\n\t\t\t\tcase 35:\n\t\t\t\t\t//end\n\t\t\t\t\t//prevent table navigation while using input element\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\tinput.addEventListener(\"keyup\", function (e) {\n\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase 38: //up arrow\n\t\t\t\tcase 37: //left arrow\n\t\t\t\tcase 39: //up arrow\n\t\t\t\tcase 40: //right arrow\n\t\t\t\tcase 13: //enter\n\t\t\t\tcase 27:\n\t\t\t\t\t//escape\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tfilterList(input.value);\n\t\t\t}\n\t\t});\n\n\t\tinput.addEventListener(\"search\", function (e) {\n\t\t\tfilterList(input.value);\n\t\t});\n\n\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\tif (blurable) {\n\t\t\t\tchooseItem();\n\t\t\t}\n\t\t});\n\n\t\tinput.addEventListener(\"focus\", function (e) {\n\t\t\tvar value = initialDisplayValue;\n\t\t\tgenUniqueColumnValues();\n\t\t\tshowList();\n\t\t\tinput.value = value;\n\t\t\tfilterList(value, true);\n\t\t});\n\n\t\tonRendered(function () {\n\t\t\tinput.style.height = \"100%\";\n\t\t\tinput.focus({ preventScroll: true });\n\t\t});\n\n\t\tif (editorParams.mask) {\n\t\t\tthis.table.modules.edit.maskInput(input, editorParams);\n\t\t}\n\n\t\tsetTimeout(function () {\n\t\t\t_this54.table.rowManager.element.addEventListener(\"scroll\", cancelItem);\n\t\t}, 10);\n\n\t\tgenUniqueColumnValues();\n\t\tinput.value = initialDisplayValue;\n\t\tfilterList(initialDisplayValue, true);\n\n\t\treturn input;\n\t},\n\n\t//star rating\n\tstar: function star(cell, onRendered, success, cancel, editorParams) {\n\t\tvar self = this,\n\t\t element = cell.getElement(),\n\t\t value = cell.getValue(),\n\t\t maxStars = element.getElementsByTagName(\"svg\").length || 5,\n\t\t size = element.getElementsByTagName(\"svg\")[0] ? element.getElementsByTagName(\"svg\")[0].getAttribute(\"width\") : 14,\n\t\t stars = [],\n\t\t starsHolder = document.createElement(\"div\"),\n\t\t star = document.createElementNS('http://www.w3.org/2000/svg', \"svg\");\n\n\t\t//change star type\n\t\tfunction starChange(val) {\n\t\t\tstars.forEach(function (star, i) {\n\t\t\t\tif (i < val) {\n\t\t\t\t\tif (self.table.browser == \"ie\") {\n\t\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-active\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstar.classList.replace(\"tabulator-star-inactive\", \"tabulator-star-active\");\n\t\t\t\t\t}\n\n\t\t\t\t\tstar.innerHTML = '<polygon fill=\"#488CE9\" stroke=\"#014AAE\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\t\t\t\t} else {\n\t\t\t\t\tif (self.table.browser == \"ie\") {\n\t\t\t\t\t\tstar.setAttribute(\"class\", \"tabulator-star-inactive\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstar.classList.replace(\"tabulator-star-active\", \"tabulator-star-inactive\");\n\t\t\t\t\t}\n\n\t\t\t\t\tstar.innerHTML = '<polygon fill=\"#010155\" stroke=\"#686868\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t//build stars\n\t\tfunction buildStar(i) {\n\n\t\t\tvar starHolder = document.createElement(\"span\");\n\t\t\tvar nextStar = star.cloneNode(true);\n\n\t\t\tstars.push(nextStar);\n\n\t\t\tstarHolder.addEventListener(\"mouseenter\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tstarChange(i);\n\t\t\t});\n\n\t\t\tstarHolder.addEventListener(\"mousemove\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t});\n\n\t\t\tstarHolder.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t\tsuccess(i);\n\t\t\t\telement.blur();\n\t\t\t});\n\n\t\t\tstarHolder.appendChild(nextStar);\n\t\t\tstarsHolder.appendChild(starHolder);\n\t\t}\n\n\t\t//handle keyboard navigation value change\n\t\tfunction changeValue(val) {\n\t\t\tvalue = val;\n\t\t\tstarChange(val);\n\t\t}\n\n\t\t//style cell\n\t\telement.style.whiteSpace = \"nowrap\";\n\t\telement.style.overflow = \"hidden\";\n\t\telement.style.textOverflow = \"ellipsis\";\n\n\t\t//style holding element\n\t\tstarsHolder.style.verticalAlign = \"middle\";\n\t\tstarsHolder.style.display = \"inline-block\";\n\t\tstarsHolder.style.padding = \"4px\";\n\n\t\t//style star\n\t\tstar.setAttribute(\"width\", size);\n\t\tstar.setAttribute(\"height\", size);\n\t\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\t\tstar.setAttribute(\"xml:space\", \"preserve\");\n\t\tstar.style.padding = \"0 1px\";\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tstarsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tstarsHolder.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//create correct number of stars\n\t\tfor (var i = 1; i <= maxStars; i++) {\n\t\t\tbuildStar(i);\n\t\t}\n\n\t\t//ensure value does not exceed number of stars\n\t\tvalue = Math.min(parseInt(value), maxStars);\n\n\t\t// set initial styling of stars\n\t\tstarChange(value);\n\n\t\tstarsHolder.addEventListener(\"mousemove\", function (e) {\n\t\t\tstarChange(0);\n\t\t});\n\n\t\tstarsHolder.addEventListener(\"click\", function (e) {\n\t\t\tsuccess(0);\n\t\t});\n\n\t\telement.addEventListener(\"blur\", function (e) {\n\t\t\tcancel();\n\t\t});\n\n\t\t//allow key based navigation\n\t\telement.addEventListener(\"keydown\", function (e) {\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase 39:\n\t\t\t\t\t//right arrow\n\t\t\t\t\tchangeValue(value + 1);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 37:\n\t\t\t\t\t//left arrow\n\t\t\t\t\tchangeValue(value - 1);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 13:\n\t\t\t\t\t//enter\n\t\t\t\t\tsuccess(value);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 27:\n\t\t\t\t\t//escape\n\t\t\t\t\tcancel();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\n\t\treturn starsHolder;\n\t},\n\n\t//draggable progress bar\n\tprogress: function progress(cell, onRendered, success, cancel, editorParams) {\n\t\tvar element = cell.getElement(),\n\t\t max = typeof editorParams.max === \"undefined\" ? element.getElementsByTagName(\"div\")[0].getAttribute(\"max\") || 100 : editorParams.max,\n\t\t min = typeof editorParams.min === \"undefined\" ? element.getElementsByTagName(\"div\")[0].getAttribute(\"min\") || 0 : editorParams.min,\n\t\t percent = (max - min) / 100,\n\t\t value = cell.getValue() || 0,\n\t\t handle = document.createElement(\"div\"),\n\t\t bar = document.createElement(\"div\"),\n\t\t mouseDrag,\n\t\t mouseDragWidth;\n\n\t\t//set new value\n\t\tfunction updateValue() {\n\t\t\tvar style = window.getComputedStyle(element, null);\n\n\t\t\tvar calcVal = percent * Math.round(bar.offsetWidth / ((element.clientWidth - parseInt(style.getPropertyValue(\"padding-left\")) - parseInt(style.getPropertyValue(\"padding-right\"))) / 100)) + min;\n\t\t\tsuccess(calcVal);\n\t\t\telement.setAttribute(\"aria-valuenow\", calcVal);\n\t\t\telement.setAttribute(\"aria-label\", value);\n\t\t}\n\n\t\t//style handle\n\t\thandle.style.position = \"absolute\";\n\t\thandle.style.right = \"0\";\n\t\thandle.style.top = \"0\";\n\t\thandle.style.bottom = \"0\";\n\t\thandle.style.width = \"5px\";\n\t\thandle.classList.add(\"tabulator-progress-handle\");\n\n\t\t//style bar\n\t\tbar.style.display = \"inline-block\";\n\t\tbar.style.position = \"relative\";\n\t\t// bar.style.top = \"8px\";\n\t\t// bar.style.bottom = \"8px\";\n\t\t// bar.style.left = \"4px\";\n\t\t// bar.style.marginRight = \"4px\";\n\t\tbar.style.height = \"100%\";\n\t\tbar.style.backgroundColor = \"#488CE9\";\n\t\tbar.style.maxWidth = \"100%\";\n\t\tbar.style.minWidth = \"0%\";\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tbar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tbar.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t//style cell\n\t\telement.style.padding = \"4px 4px\";\n\n\t\t//make sure value is in range\n\t\tvalue = Math.min(parseFloat(value), max);\n\t\tvalue = Math.max(parseFloat(value), min);\n\n\t\t//workout percentage\n\t\tvalue = Math.round((value - min) / percent);\n\t\t// bar.style.right = value + \"%\";\n\t\tbar.style.width = value + \"%\";\n\n\t\telement.setAttribute(\"aria-valuemin\", min);\n\t\telement.setAttribute(\"aria-valuemax\", max);\n\n\t\tbar.appendChild(handle);\n\n\t\thandle.addEventListener(\"mousedown\", function (e) {\n\t\t\tmouseDrag = e.screenX;\n\t\t\tmouseDragWidth = bar.offsetWidth;\n\t\t});\n\n\t\thandle.addEventListener(\"mouseover\", function () {\n\t\t\thandle.style.cursor = \"ew-resize\";\n\t\t});\n\n\t\telement.addEventListener(\"mousemove\", function (e) {\n\t\t\tif (mouseDrag) {\n\t\t\t\tbar.style.width = mouseDragWidth + e.screenX - mouseDrag + \"px\";\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"mouseup\", function (e) {\n\t\t\tif (mouseDrag) {\n\t\t\t\te.stopPropagation();\n\t\t\t\te.stopImmediatePropagation();\n\n\t\t\t\tmouseDrag = false;\n\t\t\t\tmouseDragWidth = false;\n\n\t\t\t\tupdateValue();\n\t\t\t}\n\t\t});\n\n\t\t//allow key based navigation\n\t\telement.addEventListener(\"keydown\", function (e) {\n\t\t\tswitch (e.keyCode) {\n\t\t\t\tcase 39:\n\t\t\t\t\t//right arrow\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbar.style.width = bar.clientWidth + element.clientWidth / 100 + \"px\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 37:\n\t\t\t\t\t//left arrow\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tbar.style.width = bar.clientWidth - element.clientWidth / 100 + \"px\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 9: //tab\n\t\t\t\tcase 13:\n\t\t\t\t\t//enter\n\t\t\t\t\tupdateValue();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 27:\n\t\t\t\t\t//escape\n\t\t\t\t\tcancel();\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\t\t});\n\n\t\telement.addEventListener(\"blur\", function () {\n\t\t\tcancel();\n\t\t});\n\n\t\treturn bar;\n\t},\n\n\t//checkbox\n\ttickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {\n\t\tvar value = cell.getValue(),\n\t\t input = document.createElement(\"input\"),\n\t\t tristate = editorParams.tristate,\n\t\t indetermValue = typeof editorParams.indeterminateValue === \"undefined\" ? null : editorParams.indeterminateValue,\n\t\t indetermState = false;\n\n\t\tinput.setAttribute(\"type\", \"checkbox\");\n\t\tinput.style.marginTop = \"5px\";\n\t\tinput.style.boxSizing = \"border-box\";\n\n\t\tif (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == \"object\") {\n\t\t\tfor (var key in editorParams.elementAttributes) {\n\t\t\t\tif (key.charAt(0) == \"+\") {\n\t\t\t\t\tkey = key.slice(1);\n\t\t\t\t\tinput.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes[\"+\" + key]);\n\t\t\t\t} else {\n\t\t\t\t\tinput.setAttribute(key, editorParams.elementAttributes[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tinput.value = value;\n\n\t\tif (tristate && (typeof value === \"undefined\" || value === indetermValue || value === \"\")) {\n\t\t\tindetermState = true;\n\t\t\tinput.indeterminate = true;\n\t\t}\n\n\t\tif (this.table.browser != \"firefox\") {\n\t\t\t//prevent blur issue on mac firefox\n\t\t\tonRendered(function () {\n\t\t\t\tinput.focus({ preventScroll: true });\n\t\t\t});\n\t\t}\n\n\t\tinput.checked = value === true || value === \"true\" || value === \"True\" || value === 1;\n\n\t\tonRendered(function () {\n\t\t\tinput.focus();\n\t\t});\n\n\t\tfunction setValue(blur) {\n\t\t\tif (tristate) {\n\t\t\t\tif (!blur) {\n\t\t\t\t\tif (input.checked && !indetermState) {\n\t\t\t\t\t\tinput.checked = false;\n\t\t\t\t\t\tinput.indeterminate = true;\n\t\t\t\t\t\tindetermState = true;\n\t\t\t\t\t\treturn indetermValue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindetermState = false;\n\t\t\t\t\t\treturn input.checked;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (indetermState) {\n\t\t\t\t\t\treturn indetermValue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn input.checked;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn input.checked;\n\t\t\t}\n\t\t}\n\n\t\t//submit new value on blur\n\t\tinput.addEventListener(\"change\", function (e) {\n\t\t\tsuccess(setValue());\n\t\t});\n\n\t\tinput.addEventListener(\"blur\", function (e) {\n\t\t\tsuccess(setValue(true));\n\t\t});\n\n\t\t//submit new value on enter\n\t\tinput.addEventListener(\"keydown\", function (e) {\n\t\t\tif (e.keyCode == 13) {\n\t\t\t\tsuccess(setValue());\n\t\t\t}\n\t\t\tif (e.keyCode == 27) {\n\t\t\t\tcancel();\n\t\t\t}\n\t\t});\n\n\t\treturn input;\n\t}\n};\n\nTabulator.prototype.registerModule(\"edit\", Edit);\n\nvar ExportRow = function ExportRow(type, columns, component, indent) {\n\tthis.type = type;\n\tthis.columns = columns;\n\tthis.component = component || false;\n\tthis.indent = indent || 0;\n};\n\nvar ExportColumn = function ExportColumn(value, component, width, height, depth) {\n\tthis.value = value;\n\tthis.component = component || false;\n\tthis.width = width;\n\tthis.height = height;\n\tthis.depth = depth;\n};\n\nvar Export = function Export(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.config = {};\n\tthis.cloneTableStyle = true;\n\tthis.colVisProp = \"\";\n};\n\nExport.prototype.generateExportList = function (config, style, range, colVisProp) {\n\tthis.cloneTableStyle = style;\n\tthis.config = config || {};\n\tthis.colVisProp = colVisProp;\n\n\tvar headers = this.config.columnHeaders !== false ? this.headersToExportRows(this.generateColumnGroupHeaders()) : [];\n\tvar body = this.bodyToExportRows(this.rowLookup(range));\n\n\treturn headers.concat(body);\n};\n\nExport.prototype.genereateTable = function (config, style, range, colVisProp) {\n\tvar list = this.generateExportList(config, style, range, colVisProp);\n\n\treturn this.genereateTableElement(list);\n};\n\nExport.prototype.rowLookup = function (range) {\n\tvar _this55 = this;\n\n\tvar rows = [];\n\n\tif (typeof range == \"function\") {\n\t\trange.call(this.table).forEach(function (row) {\n\t\t\trow = _this55.table.rowManager.findRow(row);\n\n\t\t\tif (row) {\n\t\t\t\trows.push(row);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tswitch (range) {\n\t\t\tcase true:\n\t\t\tcase \"visible\":\n\t\t\t\trows = this.table.rowManager.getVisibleRows(true);\n\t\t\t\tbreak;\n\n\t\t\tcase \"all\":\n\t\t\t\trows = this.table.rowManager.rows;\n\t\t\t\tbreak;\n\n\t\t\tcase \"selected\":\n\t\t\t\trows = this.table.modules.selectRow.selectedRows;\n\t\t\t\tbreak;\n\n\t\t\tcase \"active\":\n\t\t\tdefault:\n\t\t\t\tif (this.table.options.pagination) {\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows(this.table.rowManager.displayRows.length - 2);\n\t\t\t\t} else {\n\t\t\t\t\trows = this.table.rowManager.getDisplayRows();\n\t\t\t\t}\n\t\t}\n\t}\n\n\treturn Object.assign([], rows);\n};\n\nExport.prototype.generateColumnGroupHeaders = function () {\n\tvar _this56 = this;\n\n\tvar output = [];\n\n\tvar columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;\n\n\tcolumns.forEach(function (column) {\n\t\tvar colData = _this56.processColumnGroup(column);\n\n\t\tif (colData) {\n\t\t\toutput.push(colData);\n\t\t}\n\t});\n\n\treturn output;\n};\n\nExport.prototype.processColumnGroup = function (column) {\n\tvar _this57 = this;\n\n\tvar subGroups = column.columns,\n\t maxDepth = 0,\n\t title = column.definition[\"title\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))] || column.definition.title;\n\n\tvar groupData = {\n\t\ttitle: title,\n\t\tcolumn: column,\n\t\tdepth: 1\n\t};\n\n\tif (subGroups.length) {\n\t\tgroupData.subGroups = [];\n\t\tgroupData.width = 0;\n\n\t\tsubGroups.forEach(function (subGroup) {\n\t\t\tvar subGroupData = _this57.processColumnGroup(subGroup);\n\n\t\t\tif (subGroupData) {\n\t\t\t\tgroupData.width += subGroupData.width;\n\t\t\t\tgroupData.subGroups.push(subGroupData);\n\n\t\t\t\tif (subGroupData.depth > maxDepth) {\n\t\t\t\t\tmaxDepth = subGroupData.depth;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tgroupData.depth += maxDepth;\n\n\t\tif (!groupData.width) {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tif (this.columnVisCheck(column)) {\n\t\t\tgroupData.width = 1;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn groupData;\n};\n\nExport.prototype.columnVisCheck = function (column) {\n\treturn column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);\n};\n\nExport.prototype.headersToExportRows = function (columns) {\n\tvar headers = [],\n\t headerDepth = 0,\n\t exportRows = [];\n\n\tfunction parseColumnGroup(column, level) {\n\n\t\tvar depth = headerDepth - level;\n\n\t\tif (typeof headers[level] === \"undefined\") {\n\t\t\theaders[level] = [];\n\t\t}\n\n\t\tcolumn.height = column.subGroups ? 1 : depth - column.depth + 1;\n\n\t\theaders[level].push(column);\n\n\t\tif (column.height > 1) {\n\t\t\tfor (var _i10 = 1; _i10 < column.height; _i10++) {\n\n\t\t\t\tif (typeof headers[level + _i10] === \"undefined\") {\n\t\t\t\t\theaders[level + _i10] = [];\n\t\t\t\t}\n\n\t\t\t\theaders[level + _i10].push(false);\n\t\t\t}\n\t\t}\n\n\t\tif (column.width > 1) {\n\t\t\tfor (var _i11 = 1; _i11 < column.width; _i11++) {\n\t\t\t\theaders[level].push(false);\n\t\t\t}\n\t\t}\n\n\t\tif (column.subGroups) {\n\t\t\tcolumn.subGroups.forEach(function (subGroup) {\n\t\t\t\tparseColumnGroup(subGroup, level + 1);\n\t\t\t});\n\t\t}\n\t}\n\n\t//calculate maximum header debth\n\tcolumns.forEach(function (column) {\n\t\tif (column.depth > headerDepth) {\n\t\t\theaderDepth = column.depth;\n\t\t}\n\t});\n\n\tcolumns.forEach(function (column) {\n\t\tparseColumnGroup(column, 0);\n\t});\n\n\theaders.forEach(function (header) {\n\t\tvar columns = [];\n\n\t\theader.forEach(function (col) {\n\t\t\tif (col) {\n\t\t\t\tcolumns.push(new ExportColumn(col.title, col.column.getComponent(), col.width, col.height, col.depth));\n\t\t\t} else {\n\t\t\t\tcolumns.push(null);\n\t\t\t}\n\t\t});\n\n\t\texportRows.push(new ExportRow(\"header\", columns));\n\t});\n\n\treturn exportRows;\n};\n\nExport.prototype.bodyToExportRows = function (rows) {\n\tvar _this58 = this;\n\n\tvar columns = [];\n\tvar exportRows = [];\n\n\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\tif (_this58.columnVisCheck(column)) {\n\t\t\tcolumns.push(column.getComponent());\n\t\t}\n\t});\n\n\tif (this.config.columnCalcs !== false && this.table.modExists(\"columnCalcs\")) {\n\t\tif (this.table.modules.columnCalcs.topInitialized) {\n\t\t\trows.unshift(this.table.modules.columnCalcs.topRow);\n\t\t}\n\n\t\tif (this.table.modules.columnCalcs.botInitialized) {\n\t\t\trows.push(this.table.modules.columnCalcs.botRow);\n\t\t}\n\t}\n\n\trows = rows.filter(function (row) {\n\t\tswitch (row.type) {\n\t\t\tcase \"group\":\n\t\t\t\treturn _this58.config.rowGroups !== false;\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\treturn _this58.config.columnCalcs !== false;\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\treturn !(_this58.table.options.dataTree && _this58.config.dataTree === false && row.modules.dataTree.parent);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn true;\n\t});\n\n\trows.forEach(function (row, i) {\n\t\tvar rowData = row.getData(_this58.colVisProp);\n\t\tvar exportCols = [];\n\t\tvar indent = 0;\n\n\t\tswitch (row.type) {\n\t\t\tcase \"group\":\n\t\t\t\tindent = row.level;\n\t\t\t\texportCols.push(new ExportColumn(row.key, row.getComponent(), columns.length, 1));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\tcase \"row\":\n\t\t\t\tcolumns.forEach(function (col) {\n\t\t\t\t\texportCols.push(new ExportColumn(col._column.getFieldValue(rowData), col, 1, 1));\n\t\t\t\t});\n\n\t\t\t\tif (_this58.table.options.dataTree && _this58.config.dataTree !== false) {\n\t\t\t\t\tindent = row.modules.dataTree.index;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\texportRows.push(new ExportRow(row.type, exportCols, row.getComponent(), indent));\n\t});\n\n\treturn exportRows;\n};\n\nExport.prototype.genereateTableElement = function (list) {\n\tvar _this59 = this;\n\n\tvar table = document.createElement(\"table\"),\n\t headerEl = document.createElement(\"thead\"),\n\t bodyEl = document.createElement(\"tbody\"),\n\t styles = this.lookupTableStyles(),\n\t rowFormatter = this.table.options[\"rowFormatter\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))],\n\t setup = {};\n\n\tsetup.rowFormatter = rowFormatter !== null ? rowFormatter : this.table.options.rowFormatter;\n\n\tif (this.table.options.dataTree && this.config.dataTree !== false && this.table.modExists(\"columnCalcs\")) {\n\t\tsetup.treeElementField = this.table.modules.dataTree.elementField;\n\t}\n\n\t//assign group header formatter\n\tsetup.groupHeader = this.table.options[\"groupHeader\" + (this.colVisProp.charAt(0).toUpperCase() + this.colVisProp.slice(1))];\n\n\tif (setup.groupHeader && !Array.isArray(setup.groupHeader)) {\n\t\tsetup.groupHeader = [setup.groupHeader];\n\t}\n\n\ttable.classList.add(\"tabulator-print-table\");\n\n\tthis.mapElementStyles(this.table.columnManager.getHeadersElement(), headerEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\tif (list.length > 1000) {\n\t\tconsole.warn(\"It may take a long time to render an HTML table with more than 1000 rows\");\n\t}\n\n\tlist.forEach(function (row, i) {\n\t\tswitch (row.type) {\n\t\t\tcase \"header\":\n\t\t\t\theaderEl.appendChild(_this59.genereateHeaderElement(row, setup, styles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"group\":\n\t\t\t\tbodyEl.appendChild(_this59.genereateGroupElement(row, setup, styles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"calc\":\n\t\t\t\tbodyEl.appendChild(_this59.genereateCalcElement(row, setup, styles));\n\t\t\t\tbreak;\n\n\t\t\tcase \"row\":\n\t\t\t\tvar rowEl = _this59.genereateRowElement(row, setup, styles);\n\t\t\t\t_this59.mapElementStyles(i % 2 && styles.evenRow ? styles.evenRow : styles.oddRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\t\t\t\tbodyEl.appendChild(rowEl);\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif (headerEl.innerHTML) {\n\t\ttable.appendChild(headerEl);\n\t}\n\n\ttable.appendChild(bodyEl);\n\n\tthis.mapElementStyles(this.table.element, table, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\"]);\n\treturn table;\n};\n\nExport.prototype.lookupTableStyles = function () {\n\tvar styles = {};\n\n\t//lookup row styles\n\tif (this.cloneTableStyle && window.getComputedStyle) {\n\t\tstyles.oddRow = this.table.element.querySelector(\".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\tstyles.evenRow = this.table.element.querySelector(\".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\tstyles.calcRow = this.table.element.querySelector(\".tabulator-row.tabulator-calcs\");\n\t\tstyles.firstRow = this.table.element.querySelector(\".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)\");\n\t\tstyles.firstGroup = this.table.element.getElementsByClassName(\"tabulator-group\")[0];\n\n\t\tif (styles.firstRow) {\n\t\t\tstyles.styleCells = styles.firstRow.getElementsByClassName(\"tabulator-cell\");\n\t\t\tstyles.firstCell = styles.styleCells[0];\n\t\t\tstyles.lastCell = styles.styleCells[styles.styleCells.length - 1];\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nExport.prototype.genereateHeaderElement = function (row, setup, styles) {\n\tvar _this60 = this;\n\n\tvar rowEl = document.createElement(\"tr\");\n\n\trow.columns.forEach(function (column) {\n\t\tif (column) {\n\t\t\tvar cellEl = document.createElement(\"th\");\n\t\t\tvar classNames = column.component._column.definition.cssClass ? column.component._column.definition.cssClass.split(\" \") : [];\n\n\t\t\tcellEl.colSpan = column.width;\n\t\t\tcellEl.rowSpan = column.height;\n\n\t\t\tcellEl.innerHTML = column.value;\n\n\t\t\tif (_this60.cloneTableStyle) {\n\t\t\t\tcellEl.style.boxSizing = \"border-box\";\n\t\t\t}\n\n\t\t\tclassNames.forEach(function (className) {\n\t\t\t\tcellEl.classList.add(className);\n\t\t\t});\n\n\t\t\t_this60.mapElementStyles(column.component.getElement(), cellEl, [\"text-align\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"background-color\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\t\t\t_this60.mapElementStyles(column.component._column.contentElement, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\n\t\t\tif (column.component._column.visible) {\n\t\t\t\t_this60.mapElementStyles(column.component.getElement(), cellEl, [\"width\"]);\n\t\t\t} else {\n\t\t\t\tif (column.component._column.definition.width) {\n\t\t\t\t\tcellEl.style.width = column.component._column.definition.width + \"px\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (column.component._column.parent) {\n\t\t\t\t_this60.mapElementStyles(column.component._column.parent.groupElement, cellEl, [\"border-top\"]);\n\t\t\t}\n\n\t\t\trowEl.appendChild(cellEl);\n\t\t}\n\t});\n\n\treturn rowEl;\n};\n\nExport.prototype.genereateGroupElement = function (row, setup, styles) {\n\n\tvar rowEl = document.createElement(\"tr\"),\n\t cellEl = document.createElement(\"td\"),\n\t group = row.columns[0];\n\n\trowEl.classList.add(\"tabulator-print-table-row\");\n\n\tif (setup.groupHeader && setup.groupHeader[row.indent]) {\n\t\tgroup.value = setup.groupHeader[row.indent](group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t} else {\n\t\tif (setup.groupHeader === false) {\n\t\t\tgroup.value = group.value;\n\t\t} else {\n\t\t\tgroup.value = row.component._group.generator(group.value, row.component._group.getRowCount(), row.component._group.getData(), row.component);\n\t\t}\n\t}\n\n\tcellEl.colSpan = group.width;\n\tcellEl.innerHTML = group.value;\n\n\trowEl.classList.add(\"tabulator-print-table-group\");\n\trowEl.classList.add(\"tabulator-group-level-\" + row.indent);\n\n\tif (group.component.isVisible()) {\n\t\trowEl.classList.add(\"tabulator-group-visible\");\n\t}\n\n\tthis.mapElementStyles(styles.firstGroup, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\tthis.mapElementStyles(styles.firstGroup, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\"]);\n\n\trowEl.appendChild(cellEl);\n\n\treturn rowEl;\n};\n\nExport.prototype.genereateCalcElement = function (row, setup, styles) {\n\tvar rowEl = this.genereateRowElement(row, setup, styles);\n\n\trowEl.classList.add(\"tabulator-print-table-calcs\");\n\tthis.mapElementStyles(styles.calcRow, rowEl, [\"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\", \"background-color\"]);\n\n\treturn rowEl;\n};\n\nExport.prototype.genereateRowElement = function (row, setup, styles) {\n\tvar _this61 = this;\n\n\tvar rowEl = document.createElement(\"tr\");\n\n\trowEl.classList.add(\"tabulator-print-table-row\");\n\n\trow.columns.forEach(function (col) {\n\n\t\tif (col) {\n\t\t\tvar cellEl = document.createElement(\"td\"),\n\t\t\t column = col.component._column,\n\t\t\t value = col.value;\n\n\t\t\tvar cellWrapper = {\n\t\t\t\tmodules: {},\n\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\treturn value;\n\t\t\t\t},\n\t\t\t\tgetField: function getField() {\n\t\t\t\t\treturn column.definition.field;\n\t\t\t\t},\n\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\treturn cellEl;\n\t\t\t\t},\n\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetData: function getData() {\n\t\t\t\t\treturn row.component.getData();\n\t\t\t\t},\n\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\treturn row.component;\n\t\t\t\t},\n\t\t\t\tgetComponent: function getComponent() {\n\t\t\t\t\treturn cellWrapper;\n\t\t\t\t},\n\t\t\t\tcolumn: column\n\t\t\t};\n\n\t\t\tvar classNames = column.definition.cssClass ? column.definition.cssClass.split(\" \") : [];\n\n\t\t\tclassNames.forEach(function (className) {\n\t\t\t\tcellEl.classList.add(className);\n\t\t\t});\n\n\t\t\tif (_this61.table.modExists(\"format\") && _this61.config.formatCells !== false) {\n\t\t\t\tvalue = _this61.table.modules.format.formatExportValue(cellWrapper, _this61.colVisProp);\n\t\t\t} else {\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase \"object\":\n\t\t\t\t\t\tvalue = JSON.stringify(value);\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"undefined\":\n\t\t\t\t\tcase \"null\":\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value instanceof Node) {\n\t\t\t\tcellEl.appendChild(value);\n\t\t\t} else {\n\t\t\t\tcellEl.innerHTML = value;\n\t\t\t}\n\n\t\t\tif (styles.firstCell) {\n\t\t\t\t_this61.mapElementStyles(styles.firstCell, cellEl, [\"padding-top\", \"padding-left\", \"padding-right\", \"padding-bottom\", \"border-top\", \"border-left\", \"border-right\", \"border-bottom\", \"color\", \"font-weight\", \"font-family\", \"font-size\"]);\n\n\t\t\t\tif (column.definition.align) {\n\t\t\t\t\tcellEl.style.textAlign = column.definition.align;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (_this61.table.options.dataTree && _this61.config.dataTree !== false) {\n\t\t\t\tif (setup.treeElementField && setup.treeElementField == column.field || !setup.treeElementField && i == 0) {\n\t\t\t\t\tif (row.component._row.modules.dataTree.controlEl) {\n\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.controlEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t}\n\t\t\t\t\tif (row.component._row.modules.dataTree.branchEl) {\n\t\t\t\t\t\tcellEl.insertBefore(row.component._row.modules.dataTree.branchEl.cloneNode(true), cellEl.firstChild);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trowEl.appendChild(cellEl);\n\n\t\t\tif (cellWrapper.modules.format && cellWrapper.modules.format.renderedCallback) {\n\t\t\t\tcellWrapper.modules.format.renderedCallback();\n\t\t\t}\n\n\t\t\tif (setup.rowFormatter && _this61.config.formatCells !== false) {\n\t\t\t\tsetup.rowFormatter(row.component);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn rowEl;\n};\n\nExport.prototype.genereateHTMLTable = function (list) {\n\tvar holder = document.createElement(\"div\");\n\n\tholder.appendChild(this.genereateTableElement(list));\n\n\treturn holder.innerHTML;\n};\n\nExport.prototype.getHtml = function (visible, style, config, colVisProp) {\n\tvar list = this.generateExportList(config || this.table.options.htmlOutputConfig, style, visible, colVisProp || \"htmlOutput\");\n\n\treturn this.genereateHTMLTable(list);\n};\n\nExport.prototype.mapElementStyles = function (from, to, props) {\n\tif (this.cloneTableStyle && from && to) {\n\n\t\tvar lookup = {\n\t\t\t\"background-color\": \"backgroundColor\",\n\t\t\t\"color\": \"fontColor\",\n\t\t\t\"width\": \"width\",\n\t\t\t\"font-weight\": \"fontWeight\",\n\t\t\t\"font-family\": \"fontFamily\",\n\t\t\t\"font-size\": \"fontSize\",\n\t\t\t\"text-align\": \"textAlign\",\n\t\t\t\"border-top\": \"borderTop\",\n\t\t\t\"border-left\": \"borderLeft\",\n\t\t\t\"border-right\": \"borderRight\",\n\t\t\t\"border-bottom\": \"borderBottom\",\n\t\t\t\"padding-top\": \"paddingTop\",\n\t\t\t\"padding-left\": \"paddingLeft\",\n\t\t\t\"padding-right\": \"paddingRight\",\n\t\t\t\"padding-bottom\": \"paddingBottom\"\n\t\t};\n\n\t\tif (window.getComputedStyle) {\n\t\t\tvar fromStyle = window.getComputedStyle(from);\n\n\t\t\tprops.forEach(function (prop) {\n\t\t\t\tto.style[lookup[prop]] = fromStyle.getPropertyValue(prop);\n\t\t\t});\n\t\t}\n\t}\n};\n\nTabulator.prototype.registerModule(\"export\", Export);\n\nvar Filter = function Filter(table) {\n\n\tthis.table = table; //hold Tabulator object\n\n\tthis.filterList = []; //hold filter list\n\tthis.headerFilters = {}; //hold column filters\n\tthis.headerFilterColumns = []; //hold columns that use header filters\n\n\tthis.prevHeaderFilterChangeCheck = \"\";\n\tthis.prevHeaderFilterChangeCheck = \"{}\";\n\n\tthis.changed = false; //has filtering changed since last render\n};\n\n//initialize column header filter\nFilter.prototype.initializeColumn = function (column, value) {\n\tvar self = this,\n\t field = column.getField(),\n\t params;\n\n\t//handle successfull value change\n\tfunction success(value) {\n\t\tvar filterType = column.modules.filter.tagType == \"input\" && column.modules.filter.attrType == \"text\" || column.modules.filter.tagType == \"textarea\" ? \"partial\" : \"match\",\n\t\t type = \"\",\n\t\t filterChangeCheck = \"\",\n\t\t filterFunc;\n\n\t\tif (typeof column.modules.filter.prevSuccess === \"undefined\" || column.modules.filter.prevSuccess !== value) {\n\n\t\t\tcolumn.modules.filter.prevSuccess = value;\n\n\t\t\tif (!column.modules.filter.emptyFunc(value)) {\n\t\t\t\tcolumn.modules.filter.value = value;\n\n\t\t\t\tswitch (_typeof(column.definition.headerFilterFunc)) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tif (self.filters[column.definition.headerFilterFunc]) {\n\t\t\t\t\t\t\ttype = column.definition.headerFilterFunc;\n\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\t\treturn self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconsole.warn(\"Header Filter Error - Matching filter function not found: \", column.definition.headerFilterFunc);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\tvar params = column.definition.headerFilterFuncParams || {};\n\t\t\t\t\t\t\tvar fieldVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\tparams = typeof params === \"function\" ? params(value, fieldVal, data) : params;\n\n\t\t\t\t\t\t\treturn column.definition.headerFilterFunc(value, fieldVal, data, params);\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\ttype = filterFunc;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (!filterFunc) {\n\t\t\t\t\tswitch (filterType) {\n\t\t\t\t\t\tcase \"partial\":\n\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\tvar colVal = column.getFieldValue(data);\n\n\t\t\t\t\t\t\t\tif (typeof colVal !== 'undefined' && colVal !== null) {\n\t\t\t\t\t\t\t\t\treturn String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\ttype = \"like\";\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\t\t\t\treturn column.getFieldValue(data) == value;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\ttype = \"=\";\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tself.headerFilters[field] = { value: value, func: filterFunc, type: type, params: params || {} };\n\t\t\t} else {\n\t\t\t\tdelete self.headerFilters[field];\n\t\t\t}\n\n\t\t\tfilterChangeCheck = JSON.stringify(self.headerFilters);\n\n\t\t\tif (self.prevHeaderFilterChangeCheck !== filterChangeCheck) {\n\t\t\t\tself.prevHeaderFilterChangeCheck = filterChangeCheck;\n\n\t\t\t\tself.changed = true;\n\t\t\t\tself.table.rowManager.filterRefresh();\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tcolumn.modules.filter = {\n\t\tsuccess: success,\n\t\tattrType: false,\n\t\ttagType: false,\n\t\temptyFunc: false\n\t};\n\n\tthis.generateHeaderFilterElement(column);\n};\n\nFilter.prototype.generateHeaderFilterElement = function (column, initialValue, reinitialize) {\n\tvar _this62 = this;\n\n\tvar self = this,\n\t success = column.modules.filter.success,\n\t field = column.getField(),\n\t filterElement,\n\t editor,\n\t editorElement,\n\t cellWrapper,\n\t typingTimer,\n\t searchTrigger,\n\t params;\n\n\t//handle aborted edit\n\tfunction cancel() {}\n\n\tif (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {\n\t\tcolumn.contentElement.removeChild(column.modules.filter.headerElement.parentNode);\n\t}\n\n\tif (field) {\n\n\t\t//set empty value function\n\t\tcolumn.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {\n\t\t\treturn !value && value !== \"0\" && value !== 0;\n\t\t};\n\n\t\tfilterElement = document.createElement(\"div\");\n\t\tfilterElement.classList.add(\"tabulator-header-filter\");\n\n\t\t//set column editor\n\t\tswitch (_typeof(column.definition.headerFilter)) {\n\t\t\tcase \"string\":\n\t\t\t\tif (self.table.modules.edit.editors[column.definition.headerFilter]) {\n\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.headerFilter];\n\n\t\t\t\t\tif ((column.definition.headerFilter === \"tick\" || column.definition.headerFilter === \"tickCross\") && !column.definition.headerFilterEmptyCheck) {\n\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function (value) {\n\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn(\"Filter Error - Cannot build header filter, No such editor found: \", column.definition.editor);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\teditor = column.definition.headerFilter;\n\t\t\t\tbreak;\n\n\t\t\tcase \"boolean\":\n\t\t\t\tif (column.modules.edit && column.modules.edit.editor) {\n\t\t\t\t\teditor = column.modules.edit.editor;\n\t\t\t\t} else {\n\t\t\t\t\tif (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[column.definition.formatter];\n\n\t\t\t\t\t\tif ((column.definition.formatter === \"tick\" || column.definition.formatter === \"tickCross\") && !column.definition.headerFilterEmptyCheck) {\n\t\t\t\t\t\t\tcolumn.modules.filter.emptyFunc = function (value) {\n\t\t\t\t\t\t\t\treturn value !== true && value !== false;\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\teditor = self.table.modules.edit.editors[\"input\"];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (editor) {\n\n\t\t\tcellWrapper = {\n\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\treturn typeof initialValue !== \"undefined\" ? initialValue : \"\";\n\t\t\t\t},\n\t\t\t\tgetField: function getField() {\n\t\t\t\t\treturn column.definition.field;\n\t\t\t\t},\n\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\treturn filterElement;\n\t\t\t\t},\n\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\treturn column.getComponent();\n\t\t\t\t},\n\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tnormalizeHeight: function normalizeHeight() {}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tparams = column.definition.headerFilterParams || {};\n\n\t\t\tparams = typeof params === \"function\" ? params.call(self.table) : params;\n\n\t\t\teditorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);\n\n\t\t\tif (!editorElement) {\n\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor returned a value of false\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!(editorElement instanceof Node)) {\n\t\t\t\tconsole.warn(\"Filter Error - Cannot add filter to \" + field + \" column, editor should return an instance of Node, the editor returned:\", editorElement);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t//set Placeholder Text\n\t\t\tif (field) {\n\t\t\t\tself.table.modules.localize.bind(\"headerFilters|columns|\" + column.definition.field, function (value) {\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof value !== \"undefined\" && value ? value : self.table.modules.localize.getText(\"headerFilters|default\"));\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.table.modules.localize.bind(\"headerFilters|default\", function (value) {\n\t\t\t\t\teditorElement.setAttribute(\"placeholder\", typeof self.column.definition.headerFilterPlaceholder !== \"undefined\" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t//focus on element on click\n\t\t\teditorElement.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t\teditorElement.focus();\n\t\t\t});\n\n\t\t\teditorElement.addEventListener(\"focus\", function (e) {\n\t\t\t\tvar left = _this62.table.columnManager.element.scrollLeft;\n\n\t\t\t\tif (left !== _this62.table.rowManager.element.scrollLeft) {\n\t\t\t\t\t_this62.table.rowManager.scrollHorizontal(left);\n\t\t\t\t\t_this62.table.columnManager.scrollHorizontal(left);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t//live update filters as user types\n\t\t\ttypingTimer = false;\n\n\t\t\tsearchTrigger = function searchTrigger(e) {\n\t\t\t\tif (typingTimer) {\n\t\t\t\t\tclearTimeout(typingTimer);\n\t\t\t\t}\n\n\t\t\t\ttypingTimer = setTimeout(function () {\n\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t}, self.table.options.headerFilterLiveFilterDelay);\n\t\t\t};\n\n\t\t\tcolumn.modules.filter.headerElement = editorElement;\n\t\t\tcolumn.modules.filter.attrType = editorElement.hasAttribute(\"type\") ? editorElement.getAttribute(\"type\").toLowerCase() : \"\";\n\t\t\tcolumn.modules.filter.tagType = editorElement.tagName.toLowerCase();\n\n\t\t\tif (column.definition.headerFilterLiveFilter !== false) {\n\n\t\t\t\tif (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {\n\t\t\t\t\teditorElement.addEventListener(\"keyup\", searchTrigger);\n\t\t\t\t\teditorElement.addEventListener(\"search\", searchTrigger);\n\n\t\t\t\t\t//update number filtered columns on change\n\t\t\t\t\tif (column.modules.filter.attrType == \"number\") {\n\t\t\t\t\t\teditorElement.addEventListener(\"change\", function (e) {\n\t\t\t\t\t\t\tsuccess(editorElement.value);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t//change text inputs to search inputs to allow for clearing of field\n\t\t\t\t\tif (column.modules.filter.attrType == \"text\" && this.table.browser !== \"ie\") {\n\t\t\t\t\t\teditorElement.setAttribute(\"type\", \"search\");\n\t\t\t\t\t\t// editorElement.off(\"change blur\"); //prevent blur from triggering filter and preventing selection click\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//prevent input and select elements from propegating click to column sorters etc\n\t\t\t\tif (column.modules.filter.tagType == \"input\" || column.modules.filter.tagType == \"select\" || column.modules.filter.tagType == \"textarea\") {\n\t\t\t\t\teditorElement.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfilterElement.appendChild(editorElement);\n\n\t\t\tcolumn.contentElement.appendChild(filterElement);\n\n\t\t\tif (!reinitialize) {\n\t\t\t\tself.headerFilterColumns.push(column);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconsole.warn(\"Filter Error - Cannot add header filter, column has no field set:\", column.definition.title);\n\t}\n};\n\n//hide all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\nFilter.prototype.hideHeaderFilterElements = function () {\n\tthis.headerFilterColumns.forEach(function (column) {\n\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\tcolumn.modules.filter.headerElement.style.display = 'none';\n\t\t}\n\t});\n};\n\n//show all header filter elements (used to ensure correct column widths in \"fitData\" layout mode)\nFilter.prototype.showHeaderFilterElements = function () {\n\tthis.headerFilterColumns.forEach(function (column) {\n\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\tcolumn.modules.filter.headerElement.style.display = '';\n\t\t}\n\t});\n};\n\n//programatically set focus of header filter\nFilter.prototype.setHeaderFilterFocus = function (column) {\n\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\tcolumn.modules.filter.headerElement.focus();\n\t} else {\n\t\tconsole.warn(\"Column Filter Focus Error - No header filter set on column:\", column.getField());\n\t}\n};\n\n//programmatically get value of header filter\nFilter.prototype.getHeaderFilterValue = function (column) {\n\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\treturn column.modules.filter.headerElement.value;\n\t} else {\n\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t}\n};\n\n//programatically set value of header filter\nFilter.prototype.setHeaderFilterValue = function (column, value) {\n\tif (column) {\n\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\tthis.generateHeaderFilterElement(column, value, true);\n\t\t\tcolumn.modules.filter.success(value);\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n};\n\nFilter.prototype.reloadHeaderFilter = function (column) {\n\tif (column) {\n\t\tif (column.modules.filter && column.modules.filter.headerElement) {\n\t\t\tthis.generateHeaderFilterElement(column, column.modules.filter.value, true);\n\t\t} else {\n\t\t\tconsole.warn(\"Column Filter Error - No header filter set on column:\", column.getField());\n\t\t}\n\t}\n};\n\n//check if the filters has changed since last use\nFilter.prototype.hasChanged = function () {\n\tvar changed = this.changed;\n\tthis.changed = false;\n\treturn changed;\n};\n\n//set standard filters\nFilter.prototype.setFilter = function (field, type, value, params) {\n\tvar self = this;\n\n\tself.filterList = [];\n\n\tif (!Array.isArray(field)) {\n\t\tfield = [{ field: field, type: type, value: value, params: params }];\n\t}\n\n\tself.addFilter(field);\n};\n\n//add filter to array\nFilter.prototype.addFilter = function (field, type, value, params) {\n\tvar self = this;\n\n\tif (!Array.isArray(field)) {\n\t\tfield = [{ field: field, type: type, value: value, params: params }];\n\t}\n\n\tfield.forEach(function (filter) {\n\n\t\tfilter = self.findFilter(filter);\n\n\t\tif (filter) {\n\t\t\tself.filterList.push(filter);\n\n\t\t\tself.changed = true;\n\t\t}\n\t});\n\n\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.filter) {\n\t\tthis.table.modules.persistence.save(\"filter\");\n\t}\n};\n\nFilter.prototype.findFilter = function (filter) {\n\tvar self = this,\n\t column;\n\n\tif (Array.isArray(filter)) {\n\t\treturn this.findSubFilters(filter);\n\t}\n\n\tvar filterFunc = false;\n\n\tif (typeof filter.field == \"function\") {\n\t\tfilterFunc = function filterFunc(data) {\n\t\t\treturn filter.field(data, filter.type || {}); // pass params to custom filter function\n\t\t};\n\t} else {\n\n\t\tif (self.filters[filter.type]) {\n\n\t\t\tcolumn = self.table.columnManager.getColumnByField(filter.field);\n\n\t\t\tif (column) {\n\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\treturn self.filters[filter.type](filter.value, column.getFieldValue(data), data, filter.params || {});\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tfilterFunc = function filterFunc(data) {\n\t\t\t\t\treturn self.filters[filter.type](filter.value, data[filter.field], data, filter.params || {});\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Filter Error - No such filter type found, ignoring: \", filter.type);\n\t\t}\n\t}\n\n\tfilter.func = filterFunc;\n\n\treturn filter.func ? filter : false;\n};\n\nFilter.prototype.findSubFilters = function (filters) {\n\tvar self = this,\n\t output = [];\n\n\tfilters.forEach(function (filter) {\n\t\tfilter = self.findFilter(filter);\n\n\t\tif (filter) {\n\t\t\toutput.push(filter);\n\t\t}\n\t});\n\n\treturn output.length ? output : false;\n};\n\n//get all filters\nFilter.prototype.getFilters = function (all, ajax) {\n\tvar output = [];\n\n\tif (all) {\n\t\toutput = this.getHeaderFilters();\n\t}\n\n\tif (ajax) {\n\t\toutput.forEach(function (item) {\n\t\t\tif (typeof item.type == \"function\") {\n\t\t\t\titem.type = \"function\";\n\t\t\t}\n\t\t});\n\t}\n\n\toutput = output.concat(this.filtersToArray(this.filterList, ajax));\n\n\treturn output;\n};\n\n//filter to Object\nFilter.prototype.filtersToArray = function (filterList, ajax) {\n\tvar _this63 = this;\n\n\tvar output = [];\n\n\tfilterList.forEach(function (filter) {\n\t\tvar item;\n\n\t\tif (Array.isArray(filter)) {\n\t\t\toutput.push(_this63.filtersToArray(filter, ajax));\n\t\t} else {\n\t\t\titem = { field: filter.field, type: filter.type, value: filter.value };\n\n\t\t\tif (ajax) {\n\t\t\t\tif (typeof item.type == \"function\") {\n\t\t\t\t\titem.type = \"function\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\toutput.push(item);\n\t\t}\n\t});\n\n\treturn output;\n};\n\n//get all filters\nFilter.prototype.getHeaderFilters = function () {\n\tvar self = this,\n\t output = [];\n\n\tfor (var key in this.headerFilters) {\n\t\toutput.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });\n\t}\n\n\treturn output;\n};\n\n//remove filter from array\nFilter.prototype.removeFilter = function (field, type, value) {\n\tvar self = this;\n\n\tif (!Array.isArray(field)) {\n\t\tfield = [{ field: field, type: type, value: value }];\n\t}\n\n\tfield.forEach(function (filter) {\n\t\tvar index = -1;\n\n\t\tif (_typeof(filter.field) == \"object\") {\n\t\t\tindex = self.filterList.findIndex(function (element) {\n\t\t\t\treturn filter === element;\n\t\t\t});\n\t\t} else {\n\t\t\tindex = self.filterList.findIndex(function (element) {\n\t\t\t\treturn filter.field === element.field && filter.type === element.type && filter.value === element.value;\n\t\t\t});\n\t\t}\n\n\t\tif (index > -1) {\n\t\t\tself.filterList.splice(index, 1);\n\t\t\tself.changed = true;\n\t\t} else {\n\t\t\tconsole.warn(\"Filter Error - No matching filter type found, ignoring: \", filter.type);\n\t\t}\n\t});\n\n\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.filter) {\n\t\tthis.table.modules.persistence.save(\"filter\");\n\t}\n};\n\n//clear filters\nFilter.prototype.clearFilter = function (all) {\n\tthis.filterList = [];\n\n\tif (all) {\n\t\tthis.clearHeaderFilter();\n\t}\n\n\tthis.changed = true;\n\n\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.filter) {\n\t\tthis.table.modules.persistence.save(\"filter\");\n\t}\n};\n\n//clear header filters\nFilter.prototype.clearHeaderFilter = function () {\n\tvar self = this;\n\n\tthis.headerFilters = {};\n\tself.prevHeaderFilterChangeCheck = \"{}\";\n\n\tthis.headerFilterColumns.forEach(function (column) {\n\t\tif (typeof column.modules.filter.value !== \"undefined\") {\n\t\t\tdelete column.modules.filter.value;\n\t\t}\n\t\tcolumn.modules.filter.prevSuccess = undefined;\n\t\tself.reloadHeaderFilter(column);\n\t});\n\n\tthis.changed = true;\n};\n\n//search data and return matching rows\nFilter.prototype.search = function (searchType, field, type, value) {\n\tvar self = this,\n\t activeRows = [],\n\t filterList = [];\n\n\tif (!Array.isArray(field)) {\n\t\tfield = [{ field: field, type: type, value: value }];\n\t}\n\n\tfield.forEach(function (filter) {\n\t\tfilter = self.findFilter(filter);\n\n\t\tif (filter) {\n\t\t\tfilterList.push(filter);\n\t\t}\n\t});\n\n\tthis.table.rowManager.rows.forEach(function (row) {\n\t\tvar match = true;\n\n\t\tfilterList.forEach(function (filter) {\n\t\t\tif (!self.filterRecurse(filter, row.getData())) {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\t\tif (match) {\n\t\t\tactiveRows.push(searchType === \"data\" ? row.getData(\"data\") : row.getComponent());\n\t\t}\n\t});\n\n\treturn activeRows;\n};\n\n//filter row array\nFilter.prototype.filter = function (rowList, filters) {\n\tvar self = this,\n\t activeRows = [],\n\t activeRowComponents = [];\n\n\tif (self.table.options.dataFiltering) {\n\t\tself.table.options.dataFiltering.call(self.table, self.getFilters());\n\t}\n\n\tif (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {\n\n\t\trowList.forEach(function (row) {\n\t\t\tif (self.filterRow(row)) {\n\t\t\t\tactiveRows.push(row);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tactiveRows = rowList.slice(0);\n\t}\n\n\tif (self.table.options.dataFiltered) {\n\n\t\tactiveRows.forEach(function (row) {\n\t\t\tactiveRowComponents.push(row.getComponent());\n\t\t});\n\n\t\tself.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);\n\t}\n\n\treturn activeRows;\n};\n\n//filter individual row\nFilter.prototype.filterRow = function (row, filters) {\n\tvar self = this,\n\t match = true,\n\t data = row.getData();\n\n\tself.filterList.forEach(function (filter) {\n\t\tif (!self.filterRecurse(filter, data)) {\n\t\t\tmatch = false;\n\t\t}\n\t});\n\n\tfor (var field in self.headerFilters) {\n\t\tif (!self.headerFilters[field].func(data)) {\n\t\t\tmatch = false;\n\t\t}\n\t}\n\n\treturn match;\n};\n\nFilter.prototype.filterRecurse = function (filter, data) {\n\tvar self = this,\n\t match = false;\n\n\tif (Array.isArray(filter)) {\n\t\tfilter.forEach(function (subFilter) {\n\t\t\tif (self.filterRecurse(subFilter, data)) {\n\t\t\t\tmatch = true;\n\t\t\t}\n\t\t});\n\t} else {\n\t\tmatch = filter.func(data);\n\t}\n\n\treturn match;\n};\n\n//list of available filters\nFilter.prototype.filters = {\n\n\t//equal to\n\t\"=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\treturn rowVal == filterVal ? true : false;\n\t},\n\n\t//less than\n\t\"<\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\treturn rowVal < filterVal ? true : false;\n\t},\n\n\t//less than or equal to\n\t\"<=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\treturn rowVal <= filterVal ? true : false;\n\t},\n\n\t//greater than\n\t\">\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\treturn rowVal > filterVal ? true : false;\n\t},\n\n\t//greater than or equal to\n\t\">=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\treturn rowVal >= filterVal ? true : false;\n\t},\n\n\t//not equal to\n\t\"!=\": function _(filterVal, rowVal, rowData, filterParams) {\n\t\treturn rowVal != filterVal ? true : false;\n\t},\n\n\t\"regex\": function regex(filterVal, rowVal, rowData, filterParams) {\n\n\t\tif (typeof filterVal == \"string\") {\n\t\t\tfilterVal = new RegExp(filterVal);\n\t\t}\n\n\t\treturn filterVal.test(rowVal);\n\t},\n\n\t//contains the string\n\t\"like\": function like(filterVal, rowVal, rowData, filterParams) {\n\t\tif (filterVal === null || typeof filterVal === \"undefined\") {\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t} else {\n\t\t\tif (typeof rowVal !== 'undefined' && rowVal !== null) {\n\t\t\t\treturn String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//contains the keywords\n\t\"keywords\": function keywords(filterVal, rowVal, rowData, filterParams) {\n\t\tvar keywords = filterVal.toLowerCase().split(typeof filterParams.separator === \"undefined\" ? \" \" : filterParams.separator),\n\t\t value = String(rowVal === null || typeof rowVal === \"undefined\" ? \"\" : rowVal).toLowerCase(),\n\t\t matches = [];\n\n\t\tkeywords.forEach(function (keyword) {\n\t\t\tif (value.includes(keyword)) {\n\t\t\t\tmatches.push(true);\n\t\t\t}\n\t\t});\n\n\t\treturn filterParams.matchAll ? matches.length === keywords.length : !!matches.length;\n\t},\n\n\t//starts with the string\n\t\"starts\": function starts(filterVal, rowVal, rowData, filterParams) {\n\t\tif (filterVal === null || typeof filterVal === \"undefined\") {\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t} else {\n\t\t\tif (typeof rowVal !== 'undefined' && rowVal !== null) {\n\t\t\t\treturn String(rowVal).toLowerCase().startsWith(filterVal.toLowerCase());\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//ends with the string\n\t\"ends\": function ends(filterVal, rowVal, rowData, filterParams) {\n\t\tif (filterVal === null || typeof filterVal === \"undefined\") {\n\t\t\treturn rowVal === filterVal ? true : false;\n\t\t} else {\n\t\t\tif (typeof rowVal !== 'undefined' && rowVal !== null) {\n\t\t\t\treturn String(rowVal).toLowerCase().endsWith(filterVal.toLowerCase());\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t//in array\n\t\"in\": function _in(filterVal, rowVal, rowData, filterParams) {\n\t\tif (Array.isArray(filterVal)) {\n\t\t\treturn filterVal.length ? filterVal.indexOf(rowVal) > -1 : true;\n\t\t} else {\n\t\t\tconsole.warn(\"Filter Error - filter value is not an array:\", filterVal);\n\t\t\treturn false;\n\t\t}\n\t}\n};\n\nTabulator.prototype.registerModule(\"filter\", Filter);\n\nvar Format = function Format(table) {\n\tthis.table = table; //hold Tabulator object\n};\n\n//initialize column formatter\nFormat.prototype.initializeColumn = function (column) {\n\tcolumn.modules.format = this.lookupFormatter(column, \"\");\n\n\tif (typeof column.definition.formatterPrint !== \"undefined\") {\n\t\tcolumn.modules.format.print = this.lookupFormatter(column, \"Print\");\n\t}\n\n\tif (typeof column.definition.formatterClipboard !== \"undefined\") {\n\t\tcolumn.modules.format.clipboard = this.lookupFormatter(column, \"Clipboard\");\n\t}\n\n\tif (typeof column.definition.formatterHtmlOutput !== \"undefined\") {\n\t\tcolumn.modules.format.htmlOutput = this.lookupFormatter(column, \"HtmlOutput\");\n\t}\n};\n\nFormat.prototype.lookupFormatter = function (column, type) {\n\tvar config = { params: column.definition[\"formatter\" + type + \"Params\"] || {} },\n\t formatter = column.definition[\"formatter\" + type];\n\n\t//set column formatter\n\tswitch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {\n\t\tcase \"string\":\n\n\t\t\tif (formatter === \"tick\") {\n\t\t\t\tformatter = \"tickCross\";\n\n\t\t\t\tif (typeof config.params.crossElement == \"undefined\") {\n\t\t\t\t\tconfig.params.crossElement = false;\n\t\t\t\t}\n\n\t\t\t\tconsole.warn(\"DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false\");\n\t\t\t}\n\n\t\t\tif (this.formatters[formatter]) {\n\t\t\t\tconfig.formatter = this.formatters[formatter];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\tconfig.formatter = this.formatters.plaintext;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\tconfig.formatter = formatter;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconfig.formatter = this.formatters.plaintext;\n\t\t\tbreak;\n\t}\n\n\treturn config;\n};\n\nFormat.prototype.cellRendered = function (cell) {\n\tif (cell.modules.format && cell.modules.format.renderedCallback && !cell.modules.format.rendered) {\n\t\tcell.modules.format.renderedCallback();\n\t\tcell.modules.format.rendered = true;\n\t}\n};\n\n//return a formatted value for a cell\nFormat.prototype.formatValue = function (cell) {\n\tvar component = cell.getComponent(),\n\t params = typeof cell.column.modules.format.params === \"function\" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;\n\n\tfunction onRendered(callback) {\n\t\tif (!cell.modules.format) {\n\t\t\tcell.modules.format = {};\n\t\t}\n\n\t\tcell.modules.format.renderedCallback = callback;\n\t\tcell.modules.format.rendered = false;\n\t}\n\n\treturn cell.column.modules.format.formatter.call(this, component, params, onRendered);\n};\n\nFormat.prototype.formatExportValue = function (cell, type) {\n\tvar formatter = cell.column.modules.format[type],\n\t params;\n\n\tif (formatter) {\n\t\tvar onRendered = function onRendered(callback) {\n\t\t\tif (!cell.modules.format) {\n\t\t\t\tcell.modules.format = {};\n\t\t\t}\n\n\t\t\tcell.modules.format.renderedCallback = callback;\n\t\t\tcell.modules.format.rendered = false;\n\t\t};\n\n\t\tparams = typeof formatter.params === \"function\" ? formatter.params(component) : formatter.params;\n\n\t\treturn formatter.formatter.call(this, cell.getComponent(), params, onRendered);\n\t} else {\n\t\treturn this.formatValue(cell);\n\t}\n};\n\nFormat.prototype.sanitizeHTML = function (value) {\n\tif (value) {\n\t\tvar entityMap = {\n\t\t\t'&': '&',\n\t\t\t'<': '<',\n\t\t\t'>': '>',\n\t\t\t'\"': '"',\n\t\t\t\"'\": ''',\n\t\t\t'/': '/',\n\t\t\t'`': '`',\n\t\t\t'=': '='\n\t\t};\n\n\t\treturn String(value).replace(/[&<>\"'`=\\/]/g, function (s) {\n\t\t\treturn entityMap[s];\n\t\t});\n\t} else {\n\t\treturn value;\n\t}\n};\n\nFormat.prototype.emptyToSpace = function (value) {\n\treturn value === null || typeof value === \"undefined\" || value === \"\" ? \" \" : value;\n};\n\n//get formatter for cell\nFormat.prototype.getFormatter = function (formatter) {\n\tvar formatter;\n\n\tswitch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {\n\t\tcase \"string\":\n\t\t\tif (this.formatters[formatter]) {\n\t\t\t\tformatter = this.formatters[formatter];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Formatter Error - No such formatter found: \", formatter);\n\t\t\t\tformatter = this.formatters.plaintext;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\tformatter = formatter;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tformatter = this.formatters.plaintext;\n\t\t\tbreak;\n\t}\n\n\treturn formatter;\n};\n\n//default data formatters\nFormat.prototype.formatters = {\n\t//plain text value\n\tplaintext: function plaintext(cell, formatterParams, onRendered) {\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t},\n\n\t//html text value\n\thtml: function html(cell, formatterParams, onRendered) {\n\t\treturn cell.getValue();\n\t},\n\n\t//multiline text area\n\ttextarea: function textarea(cell, formatterParams, onRendered) {\n\t\tcell.getElement().style.whiteSpace = \"pre-wrap\";\n\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t},\n\n\t//currency formatting\n\tmoney: function money(cell, formatterParams, onRendered) {\n\t\tvar floatVal = parseFloat(cell.getValue()),\n\t\t number,\n\t\t integer,\n\t\t decimal,\n\t\t rgx;\n\n\t\tvar decimalSym = formatterParams.decimal || \".\";\n\t\tvar thousandSym = formatterParams.thousand || \",\";\n\t\tvar symbol = formatterParams.symbol || \"\";\n\t\tvar after = !!formatterParams.symbolAfter;\n\t\tvar precision = typeof formatterParams.precision !== \"undefined\" ? formatterParams.precision : 2;\n\n\t\tif (isNaN(floatVal)) {\n\t\t\treturn this.emptyToSpace(this.sanitizeHTML(cell.getValue()));\n\t\t}\n\n\t\tnumber = precision !== false ? floatVal.toFixed(precision) : floatVal;\n\t\tnumber = String(number).split(\".\");\n\n\t\tinteger = number[0];\n\t\tdecimal = number.length > 1 ? decimalSym + number[1] : \"\";\n\n\t\trgx = /(\\d+)(\\d{3})/;\n\n\t\twhile (rgx.test(integer)) {\n\t\t\tinteger = integer.replace(rgx, \"$1\" + thousandSym + \"$2\");\n\t\t}\n\n\t\treturn after ? integer + decimal + symbol : symbol + integer + decimal;\n\t},\n\n\t//clickable anchor tag\n\tlink: function link(cell, formatterParams, onRendered) {\n\t\tvar value = cell.getValue(),\n\t\t urlPrefix = formatterParams.urlPrefix || \"\",\n\t\t download = formatterParams.download,\n\t\t label = value,\n\t\t el = document.createElement(\"a\"),\n\t\t data;\n\n\t\tif (formatterParams.labelField) {\n\t\t\tdata = cell.getData();\n\t\t\tlabel = data[formatterParams.labelField];\n\t\t}\n\n\t\tif (formatterParams.label) {\n\t\t\tswitch (_typeof(formatterParams.label)) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tlabel = formatterParams.label;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"function\":\n\t\t\t\t\tlabel = formatterParams.label(cell);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (label) {\n\t\t\tif (formatterParams.urlField) {\n\t\t\t\tdata = cell.getData();\n\t\t\t\tvalue = data[formatterParams.urlField];\n\t\t\t}\n\n\t\t\tif (formatterParams.url) {\n\t\t\t\tswitch (_typeof(formatterParams.url)) {\n\t\t\t\t\tcase \"string\":\n\t\t\t\t\t\tvalue = formatterParams.url;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"function\":\n\t\t\t\t\t\tvalue = formatterParams.url(cell);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tel.setAttribute(\"href\", urlPrefix + value);\n\n\t\t\tif (formatterParams.target) {\n\t\t\t\tel.setAttribute(\"target\", formatterParams.target);\n\t\t\t}\n\n\t\t\tif (formatterParams.download) {\n\n\t\t\t\tif (typeof download == \"function\") {\n\t\t\t\t\tdownload = download(cell);\n\t\t\t\t} else {\n\t\t\t\t\tdownload = download === true ? \"\" : download;\n\t\t\t\t}\n\n\t\t\t\tel.setAttribute(\"download\", download);\n\t\t\t}\n\n\t\t\tel.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));\n\n\t\t\treturn el;\n\t\t} else {\n\t\t\treturn \" \";\n\t\t}\n\t},\n\n\t//image element\n\timage: function image(cell, formatterParams, onRendered) {\n\t\tvar el = document.createElement(\"img\"),\n\t\t src = cell.getValue();\n\n\t\tif (formatterParams.urlPrefix) {\n\t\t\tsrc = formatterParams.urlPrefix + cell.getValue();\n\t\t}\n\n\t\tif (formatterParams.urlSuffix) {\n\t\t\tsrc = src + formatterParams.urlSuffix;\n\t\t}\n\n\t\tel.setAttribute(\"src\", src);\n\n\t\tswitch (_typeof(formatterParams.height)) {\n\t\t\tcase \"number\":\n\t\t\t\tel.style.height = formatterParams.height + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase \"string\":\n\t\t\t\tel.style.height = formatterParams.height;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tswitch (_typeof(formatterParams.width)) {\n\t\t\tcase \"number\":\n\t\t\t\tel.style.width = formatterParams.width + \"px\";\n\t\t\t\tbreak;\n\n\t\t\tcase \"string\":\n\t\t\t\tel.style.width = formatterParams.width;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tel.addEventListener(\"load\", function () {\n\t\t\tcell.getRow().normalizeHeight();\n\t\t});\n\n\t\treturn el;\n\t},\n\n\t//tick or cross\n\ttickCross: function tickCross(cell, formatterParams, onRendered) {\n\t\tvar value = cell.getValue(),\n\t\t element = cell.getElement(),\n\t\t empty = formatterParams.allowEmpty,\n\t\t truthy = formatterParams.allowTruthy,\n\t\t tick = typeof formatterParams.tickElement !== \"undefined\" ? formatterParams.tickElement : '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#2DC214\" clip-rule=\"evenodd\" d=\"M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z\" fill-rule=\"evenodd\"/></svg>',\n\t\t cross = typeof formatterParams.crossElement !== \"undefined\" ? formatterParams.crossElement : '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#CE1515\" d=\"M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z\"/></svg>';\n\n\t\tif (truthy && value || value === true || value === \"true\" || value === \"True\" || value === 1 || value === \"1\") {\n\t\t\telement.setAttribute(\"aria-checked\", true);\n\t\t\treturn tick || \"\";\n\t\t} else {\n\t\t\tif (empty && (value === \"null\" || value === \"\" || value === null || typeof value === \"undefined\")) {\n\t\t\t\telement.setAttribute(\"aria-checked\", \"mixed\");\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\telement.setAttribute(\"aria-checked\", false);\n\t\t\t\treturn cross || \"\";\n\t\t\t}\n\t\t}\n\t},\n\n\tdatetime: function datetime(cell, formatterParams, onRendered) {\n\t\tvar inputFormat = formatterParams.inputFormat || \"YYYY-MM-DD hh:mm:ss\";\n\t\tvar outputFormat = formatterParams.outputFormat || \"DD/MM/YYYY hh:mm:ss\";\n\t\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\t\tvar value = cell.getValue();\n\n\t\tvar newDatetime = moment(value, inputFormat);\n\n\t\tif (newDatetime.isValid()) {\n\t\t\treturn formatterParams.timezone ? newDatetime.tz(formatterParams.timezone).format(outputFormat) : newDatetime.format(outputFormat);\n\t\t} else {\n\n\t\t\tif (invalid === true) {\n\t\t\t\treturn value;\n\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\treturn invalid(value);\n\t\t\t} else {\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t},\n\n\tdatetimediff: function datetime(cell, formatterParams, onRendered) {\n\t\tvar inputFormat = formatterParams.inputFormat || \"YYYY-MM-DD hh:mm:ss\";\n\t\tvar invalid = typeof formatterParams.invalidPlaceholder !== \"undefined\" ? formatterParams.invalidPlaceholder : \"\";\n\t\tvar suffix = typeof formatterParams.suffix !== \"undefined\" ? formatterParams.suffix : false;\n\t\tvar unit = typeof formatterParams.unit !== \"undefined\" ? formatterParams.unit : undefined;\n\t\tvar humanize = typeof formatterParams.humanize !== \"undefined\" ? formatterParams.humanize : false;\n\t\tvar date = typeof formatterParams.date !== \"undefined\" ? formatterParams.date : moment();\n\t\tvar value = cell.getValue();\n\n\t\tvar newDatetime = moment(value, inputFormat);\n\n\t\tif (newDatetime.isValid()) {\n\t\t\tif (humanize) {\n\t\t\t\treturn moment.duration(newDatetime.diff(date)).humanize(suffix);\n\t\t\t} else {\n\t\t\t\treturn newDatetime.diff(date, unit) + (suffix ? \" \" + suffix : \"\");\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (invalid === true) {\n\t\t\t\treturn value;\n\t\t\t} else if (typeof invalid === \"function\") {\n\t\t\t\treturn invalid(value);\n\t\t\t} else {\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t}\n\t},\n\n\t//select\n\tlookup: function lookup(cell, formatterParams, onRendered) {\n\t\tvar value = cell.getValue();\n\n\t\tif (typeof formatterParams[value] === \"undefined\") {\n\t\t\tconsole.warn('Missing display value for ' + value);\n\t\t\treturn value;\n\t\t}\n\n\t\treturn formatterParams[value];\n\t},\n\n\t//star rating\n\tstar: function star(cell, formatterParams, onRendered) {\n\t\tvar value = cell.getValue(),\n\t\t element = cell.getElement(),\n\t\t maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,\n\t\t stars = document.createElement(\"span\"),\n\t\t star = document.createElementNS('http://www.w3.org/2000/svg', \"svg\"),\n\t\t starActive = '<polygon fill=\"#FFEA00\" stroke=\"#C1AB60\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>',\n\t\t starInactive = '<polygon fill=\"#D2D2D2\" stroke=\"#686868\" stroke-width=\"37.6152\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" points=\"259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 \"/>';\n\n\t\t//style stars holder\n\t\tstars.style.verticalAlign = \"middle\";\n\n\t\t//style star\n\t\tstar.setAttribute(\"width\", \"14\");\n\t\tstar.setAttribute(\"height\", \"14\");\n\t\tstar.setAttribute(\"viewBox\", \"0 0 512 512\");\n\t\tstar.setAttribute(\"xml:space\", \"preserve\");\n\t\tstar.style.padding = \"0 1px\";\n\n\t\tvalue = value && !isNaN(value) ? parseInt(value) : 0;\n\n\t\tvalue = Math.max(0, Math.min(value, maxStars));\n\n\t\tfor (var i = 1; i <= maxStars; i++) {\n\t\t\tvar nextStar = star.cloneNode(true);\n\t\t\tnextStar.innerHTML = i <= value ? starActive : starInactive;\n\n\t\t\tstars.appendChild(nextStar);\n\t\t}\n\n\t\telement.style.whiteSpace = \"nowrap\";\n\t\telement.style.overflow = \"hidden\";\n\t\telement.style.textOverflow = \"ellipsis\";\n\n\t\telement.setAttribute(\"aria-label\", value);\n\n\t\treturn stars;\n\t},\n\n\ttraffic: function traffic(cell, formatterParams, onRendered) {\n\t\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\t\t el = document.createElement(\"span\"),\n\t\t max = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\t\t min = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\t\t colors = formatterParams && typeof formatterParams.color !== \"undefined\" ? formatterParams.color : [\"red\", \"orange\", \"green\"],\n\t\t color = \"#666666\",\n\t\t percent,\n\t\t percentValue;\n\n\t\tif (isNaN(value) || typeof cell.getValue() === \"undefined\") {\n\t\t\treturn;\n\t\t}\n\n\t\tel.classList.add(\"tabulator-traffic-light\");\n\n\t\t//make sure value is in range\n\t\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\t\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t\t//workout percentage\n\t\tpercent = (max - min) / 100;\n\t\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t\t//set color\n\t\tswitch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {\n\t\t\tcase \"string\":\n\t\t\t\tcolor = colors;\n\t\t\t\tbreak;\n\t\t\tcase \"function\":\n\t\t\t\tcolor = colors(value);\n\t\t\t\tbreak;\n\t\t\tcase \"object\":\n\t\t\t\tif (Array.isArray(colors)) {\n\t\t\t\t\tvar unit = 100 / colors.length;\n\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\tindex = Math.min(index, colors.length - 1);\n\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\tcolor = colors[index];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\n\t\tel.style.backgroundColor = color;\n\n\t\treturn el;\n\t},\n\n\t//progress bar\n\tprogress: function progress(cell, formatterParams, onRendered) {\n\t\t//progress bar\n\t\tvar value = this.sanitizeHTML(cell.getValue()) || 0,\n\t\t element = cell.getElement(),\n\t\t max = formatterParams && formatterParams.max ? formatterParams.max : 100,\n\t\t min = formatterParams && formatterParams.min ? formatterParams.min : 0,\n\t\t legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : \"center\",\n\t\t percent,\n\t\t percentValue,\n\t\t color,\n\t\t legend,\n\t\t legendColor,\n\t\t top,\n\t\t left,\n\t\t right,\n\t\t bottom;\n\n\t\t//make sure value is in range\n\t\tpercentValue = parseFloat(value) <= max ? parseFloat(value) : max;\n\t\tpercentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;\n\n\t\t//workout percentage\n\t\tpercent = (max - min) / 100;\n\t\tpercentValue = Math.round((percentValue - min) / percent);\n\n\t\t//set bar color\n\t\tswitch (_typeof(formatterParams.color)) {\n\t\t\tcase \"string\":\n\t\t\t\tcolor = formatterParams.color;\n\t\t\t\tbreak;\n\t\t\tcase \"function\":\n\t\t\t\tcolor = formatterParams.color(value);\n\t\t\t\tbreak;\n\t\t\tcase \"object\":\n\t\t\t\tif (Array.isArray(formatterParams.color)) {\n\t\t\t\t\tvar unit = 100 / formatterParams.color.length;\n\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\tindex = Math.min(index, formatterParams.color.length - 1);\n\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\tcolor = formatterParams.color[index];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tcolor = \"#2DC214\";\n\t\t}\n\n\t\t//generate legend\n\t\tswitch (_typeof(formatterParams.legend)) {\n\t\t\tcase \"string\":\n\t\t\t\tlegend = formatterParams.legend;\n\t\t\t\tbreak;\n\t\t\tcase \"function\":\n\t\t\t\tlegend = formatterParams.legend(value);\n\t\t\t\tbreak;\n\t\t\tcase \"boolean\":\n\t\t\t\tlegend = value;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlegend = false;\n\t\t}\n\n\t\t//set legend color\n\t\tswitch (_typeof(formatterParams.legendColor)) {\n\t\t\tcase \"string\":\n\t\t\t\tlegendColor = formatterParams.legendColor;\n\t\t\t\tbreak;\n\t\t\tcase \"function\":\n\t\t\t\tlegendColor = formatterParams.legendColor(value);\n\t\t\t\tbreak;\n\t\t\tcase \"object\":\n\t\t\t\tif (Array.isArray(formatterParams.legendColor)) {\n\t\t\t\t\tvar unit = 100 / formatterParams.legendColor.length;\n\t\t\t\t\tvar index = Math.floor(percentValue / unit);\n\n\t\t\t\t\tindex = Math.min(index, formatterParams.legendColor.length - 1);\n\t\t\t\t\tindex = Math.max(index, 0);\n\t\t\t\t\tlegendColor = formatterParams.legendColor[index];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlegendColor = \"#000\";\n\t\t}\n\n\t\telement.style.minWidth = \"30px\";\n\t\telement.style.position = \"relative\";\n\n\t\telement.setAttribute(\"aria-label\", percentValue);\n\n\t\tvar barEl = document.createElement(\"div\");\n\t\tbarEl.style.display = \"inline-block\";\n\t\tbarEl.style.position = \"relative\";\n\t\tbarEl.style.width = percentValue + \"%\";\n\t\tbarEl.style.backgroundColor = color;\n\t\tbarEl.style.height = \"100%\";\n\n\t\tbarEl.setAttribute('data-max', max);\n\t\tbarEl.setAttribute('data-min', min);\n\n\t\tif (legend) {\n\t\t\tvar legendEl = document.createElement(\"div\");\n\t\t\tlegendEl.style.position = \"absolute\";\n\t\t\tlegendEl.style.top = \"4px\";\n\t\t\tlegendEl.style.left = 0;\n\t\t\tlegendEl.style.textAlign = legendAlign;\n\t\t\tlegendEl.style.width = \"100%\";\n\t\t\tlegendEl.style.color = legendColor;\n\t\t\tlegendEl.innerHTML = legend;\n\t\t}\n\n\t\tonRendered(function () {\n\n\t\t\t//handle custom element needed if formatter is to be included in printed/downloaded output\n\t\t\tif (!(cell instanceof CellComponent)) {\n\t\t\t\tvar holderEl = document.createElement(\"div\");\n\t\t\t\tholderEl.style.position = \"absolute\";\n\t\t\t\tholderEl.style.top = \"4px\";\n\t\t\t\tholderEl.style.bottom = \"4px\";\n\t\t\t\tholderEl.style.left = \"4px\";\n\t\t\t\tholderEl.style.right = \"4px\";\n\n\t\t\t\telement.appendChild(holderEl);\n\n\t\t\t\telement = holderEl;\n\t\t\t}\n\n\t\t\telement.appendChild(barEl);\n\n\t\t\tif (legend) {\n\t\t\t\telement.appendChild(legendEl);\n\t\t\t}\n\t\t});\n\n\t\treturn \"\";\n\t},\n\n\t//background color\n\tcolor: function color(cell, formatterParams, onRendered) {\n\t\tcell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());\n\t\treturn \"\";\n\t},\n\n\t//tick icon\n\tbuttonTick: function buttonTick(cell, formatterParams, onRendered) {\n\t\treturn '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#2DC214\" clip-rule=\"evenodd\" d=\"M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z\" fill-rule=\"evenodd\"/></svg>';\n\t},\n\n\t//cross icon\n\tbuttonCross: function buttonCross(cell, formatterParams, onRendered) {\n\t\treturn '<svg enable-background=\"new 0 0 24 24\" height=\"14\" width=\"14\" viewBox=\"0 0 24 24\" xml:space=\"preserve\" ><path fill=\"#CE1515\" d=\"M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z\"/></svg>';\n\t},\n\n\t//current row number\n\trownum: function rownum(cell, formatterParams, onRendered) {\n\t\treturn this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;\n\t},\n\n\t//row handle\n\thandle: function handle(cell, formatterParams, onRendered) {\n\t\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\t\treturn \"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>\";\n\t},\n\n\tresponsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {\n\t\tvar self = this,\n\t\t open = false,\n\t\t el = document.createElement(\"div\"),\n\t\t config = cell.getRow()._row.modules.responsiveLayout;\n\n\t\tel.classList.add(\"tabulator-responsive-collapse-toggle\");\n\t\tel.innerHTML = \"<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>\";\n\n\t\tcell.getElement().classList.add(\"tabulator-row-handle\");\n\n\t\tfunction toggleList(isOpen) {\n\t\t\tvar collapseEl = config.element;\n\n\t\t\tconfig.open = isOpen;\n\n\t\t\tif (collapseEl) {\n\n\t\t\t\tif (config.open) {\n\t\t\t\t\tel.classList.add(\"open\");\n\t\t\t\t\tcollapseEl.style.display = '';\n\t\t\t\t} else {\n\t\t\t\t\tel.classList.remove(\"open\");\n\t\t\t\t\tcollapseEl.style.display = 'none';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tel.addEventListener(\"click\", function (e) {\n\t\t\te.stopImmediatePropagation();\n\t\t\ttoggleList(!config.open);\n\t\t});\n\n\t\ttoggleList(config.open);\n\n\t\treturn el;\n\t},\n\n\trowSelection: function rowSelection(cell, formatterParams, onRendered) {\n\t\tvar _this64 = this;\n\n\t\tvar checkbox = document.createElement(\"input\");\n\n\t\tcheckbox.type = 'checkbox';\n\n\t\tif (this.table.modExists(\"selectRow\", true)) {\n\n\t\t\tcheckbox.addEventListener(\"click\", function (e) {\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tif (typeof cell.getRow == 'function') {\n\t\t\t\tvar row = cell.getRow();\n\n\t\t\t\tif (row instanceof RowComponent) {\n\n\t\t\t\t\tcheckbox.addEventListener(\"change\", function (e) {\n\t\t\t\t\t\trow.toggleSelect();\n\t\t\t\t\t});\n\n\t\t\t\t\tcheckbox.checked = row.isSelected && row.isSelected();\n\t\t\t\t\tthis.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);\n\t\t\t\t} else {\n\t\t\t\t\tcheckbox = \"\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcheckbox.addEventListener(\"change\", function (e) {\n\t\t\t\t\tif (_this64.table.modules.selectRow.selectedRows.length) {\n\t\t\t\t\t\t_this64.table.deselectRow();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_this64.table.selectRow(formatterParams.rowRange);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tthis.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);\n\t\t\t}\n\t\t}\n\t\treturn checkbox;\n\t}\n};\n\nTabulator.prototype.registerModule(\"format\", Format);\n\nvar FrozenColumns = function FrozenColumns(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.leftColumns = [];\n\tthis.rightColumns = [];\n\tthis.leftMargin = 0;\n\tthis.rightMargin = 0;\n\tthis.rightPadding = 0;\n\tthis.initializationMode = \"left\";\n\tthis.active = false;\n\tthis.scrollEndTimer = false;\n};\n\n//reset initial state\nFrozenColumns.prototype.reset = function () {\n\tthis.initializationMode = \"left\";\n\tthis.leftColumns = [];\n\tthis.rightColumns = [];\n\tthis.leftMargin = 0;\n\tthis.rightMargin = 0;\n\tthis.rightMargin = 0;\n\tthis.active = false;\n\n\tthis.table.columnManager.headersElement.style.marginLeft = 0;\n\tthis.table.columnManager.element.style.paddingRight = 0;\n};\n\n//initialize specific column\nFrozenColumns.prototype.initializeColumn = function (column) {\n\tvar config = { margin: 0, edge: false };\n\n\tif (!column.isGroup) {\n\n\t\tif (this.frozenCheck(column)) {\n\n\t\t\tconfig.position = this.initializationMode;\n\n\t\t\tif (this.initializationMode == \"left\") {\n\t\t\t\tthis.leftColumns.push(column);\n\t\t\t} else {\n\t\t\t\tthis.rightColumns.unshift(column);\n\t\t\t}\n\n\t\t\tthis.active = true;\n\n\t\t\tcolumn.modules.frozen = config;\n\t\t} else {\n\t\t\tthis.initializationMode = \"right\";\n\t\t}\n\t}\n};\n\nFrozenColumns.prototype.frozenCheck = function (column) {\n\tvar frozen = false;\n\n\tif (column.parent.isGroup && column.definition.frozen) {\n\t\tconsole.warn(\"Frozen Column Error - Parent column group must be frozen, not individual columns or sub column groups\");\n\t}\n\n\tif (column.parent.isGroup) {\n\t\treturn this.frozenCheck(column.parent);\n\t} else {\n\t\treturn column.definition.frozen;\n\t}\n\n\treturn frozen;\n};\n\n//quick layout to smooth horizontal scrolling\nFrozenColumns.prototype.scrollHorizontal = function () {\n\tvar _this65 = this;\n\n\tvar rows;\n\n\tif (this.active) {\n\t\tclearTimeout(this.scrollEndTimer);\n\n\t\t//layout all rows after scroll is complete\n\t\tthis.scrollEndTimer = setTimeout(function () {\n\t\t\t_this65.layout();\n\t\t}, 100);\n\n\t\trows = this.table.rowManager.getVisibleRows();\n\n\t\tthis.calcMargins();\n\n\t\tthis.layoutColumnPosition();\n\n\t\tthis.layoutCalcRows();\n\n\t\trows.forEach(function (row) {\n\t\t\tif (row.type === \"row\") {\n\t\t\t\t_this65.layoutRow(row);\n\t\t\t}\n\t\t});\n\n\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\n\t}\n};\n\n//calculate margins for rows\nFrozenColumns.prototype.calcMargins = function () {\n\tthis.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + \"px\";\n\tthis.table.columnManager.headersElement.style.marginLeft = this.leftMargin;\n\n\tthis.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + \"px\";\n\tthis.table.columnManager.element.style.paddingRight = this.rightMargin;\n\n\t//calculate right frozen columns\n\tthis.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;\n};\n\n//layout calculation rows\nFrozenColumns.prototype.layoutCalcRows = function () {\n\tif (this.table.modExists(\"columnCalcs\")) {\n\t\tif (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {\n\t\t\tthis.layoutRow(this.table.modules.columnCalcs.topRow);\n\t\t}\n\t\tif (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {\n\t\t\tthis.layoutRow(this.table.modules.columnCalcs.botRow);\n\t\t}\n\t}\n};\n\n//calculate column positions and layout headers\nFrozenColumns.prototype.layoutColumnPosition = function (allCells) {\n\tvar _this66 = this;\n\n\tvar leftParents = [];\n\n\tthis.leftColumns.forEach(function (column, i) {\n\t\tcolumn.modules.frozen.margin = _this66._calcSpace(_this66.leftColumns, i) + _this66.table.columnManager.scrollLeft + \"px\";\n\n\t\tif (i == _this66.leftColumns.length - 1) {\n\t\t\tcolumn.modules.frozen.edge = true;\n\t\t} else {\n\t\t\tcolumn.modules.frozen.edge = false;\n\t\t}\n\n\t\tif (column.parent.isGroup) {\n\t\t\tvar parentEl = _this66.getColGroupParentElement(column);\n\t\t\tif (!leftParents.includes(parentEl)) {\n\t\t\t\t_this66.layoutElement(parentEl, column);\n\t\t\t\tleftParents.push(parentEl);\n\t\t\t}\n\n\t\t\tif (column.modules.frozen.edge) {\n\t\t\t\tparentEl.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t\t}\n\t\t} else {\n\t\t\t_this66.layoutElement(column.getElement(), column);\n\t\t}\n\n\t\tif (allCells) {\n\t\t\tcolumn.cells.forEach(function (cell) {\n\t\t\t\t_this66.layoutElement(cell.getElement(true), column);\n\t\t\t});\n\t\t}\n\t});\n\n\tthis.rightColumns.forEach(function (column, i) {\n\t\tcolumn.modules.frozen.margin = _this66.rightPadding - _this66._calcSpace(_this66.rightColumns, i + 1) + \"px\";\n\n\t\tif (i == _this66.rightColumns.length - 1) {\n\t\t\tcolumn.modules.frozen.edge = true;\n\t\t} else {\n\t\t\tcolumn.modules.frozen.edge = false;\n\t\t}\n\n\t\tif (column.parent.isGroup) {\n\t\t\t_this66.layoutElement(_this66.getColGroupParentElement(column), column);\n\t\t} else {\n\t\t\t_this66.layoutElement(column.getElement(), column);\n\t\t}\n\n\t\tif (allCells) {\n\t\t\tcolumn.cells.forEach(function (cell) {\n\t\t\t\t_this66.layoutElement(cell.getElement(true), column);\n\t\t\t});\n\t\t}\n\t});\n};\n\nFrozenColumns.prototype.getColGroupParentElement = function (column) {\n\treturn column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();\n};\n\n//layout columns appropropriatly\nFrozenColumns.prototype.layout = function () {\n\tvar self = this,\n\t rightMargin = 0;\n\n\tif (self.active) {\n\n\t\t//calculate row padding\n\t\tthis.calcMargins();\n\n\t\t// self.table.rowManager.activeRows.forEach(function(row){\n\t\t// \tself.layoutRow(row);\n\t\t// });\n\n\t\t// if(self.table.options.dataTree){\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif (row.type === \"row\") {\n\t\t\t\tself.layoutRow(row);\n\t\t\t}\n\t\t});\n\t\t// }\n\n\t\tthis.layoutCalcRows();\n\n\t\t//calculate left columns\n\t\tthis.layoutColumnPosition(true);\n\n\t\t// if(tableHolder.scrollHeight > tableHolder.clientHeight){\n\t\t// \trightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;\n\t\t// }\n\n\t\tthis.table.rowManager.tableElement.style.marginRight = this.rightMargin;\n\t}\n};\n\nFrozenColumns.prototype.layoutRow = function (row) {\n\tvar _this67 = this;\n\n\tvar rowEl = row.getElement();\n\n\trowEl.style.paddingLeft = this.leftMargin;\n\t// rowEl.style.paddingRight = this.rightMargin + \"px\";\n\n\tthis.leftColumns.forEach(function (column) {\n\t\tvar cell = row.getCell(column);\n\n\t\tif (cell) {\n\t\t\t_this67.layoutElement(cell.getElement(true), column);\n\t\t}\n\t});\n\n\tthis.rightColumns.forEach(function (column) {\n\t\tvar cell = row.getCell(column);\n\n\t\tif (cell) {\n\t\t\t_this67.layoutElement(cell.getElement(true), column);\n\t\t}\n\t});\n};\n\nFrozenColumns.prototype.layoutElement = function (element, column) {\n\n\tif (column.modules.frozen) {\n\t\telement.style.position = \"absolute\";\n\t\telement.style.left = column.modules.frozen.margin;\n\n\t\telement.classList.add(\"tabulator-frozen\");\n\n\t\tif (column.modules.frozen.edge) {\n\t\t\telement.classList.add(\"tabulator-frozen-\" + column.modules.frozen.position);\n\t\t}\n\t}\n};\n\nFrozenColumns.prototype._calcSpace = function (columns, index) {\n\tvar width = 0;\n\n\tfor (var _i12 = 0; _i12 < index; _i12++) {\n\t\tif (columns[_i12].visible) {\n\t\t\twidth += columns[_i12].getWidth();\n\t\t}\n\t}\n\n\treturn width;\n};\n\nTabulator.prototype.registerModule(\"frozenColumns\", FrozenColumns);\nvar FrozenRows = function FrozenRows(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.topElement = document.createElement(\"div\");\n\tthis.rows = [];\n\tthis.displayIndex = 0; //index in display pipeline\n};\n\nFrozenRows.prototype.initialize = function () {\n\tthis.rows = [];\n\n\tthis.topElement.classList.add(\"tabulator-frozen-rows-holder\");\n\n\t// this.table.columnManager.element.append(this.topElement);\n\tthis.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);\n};\n\nFrozenRows.prototype.setDisplayIndex = function (index) {\n\tthis.displayIndex = index;\n};\n\nFrozenRows.prototype.getDisplayIndex = function () {\n\treturn this.displayIndex;\n};\n\nFrozenRows.prototype.isFrozen = function () {\n\treturn !!this.rows.length;\n};\n\n//filter frozen rows out of display data\nFrozenRows.prototype.getRows = function (rows) {\n\tvar self = this,\n\t frozen = [],\n\t output = rows.slice(0);\n\n\tthis.rows.forEach(function (row) {\n\t\tvar index = output.indexOf(row);\n\n\t\tif (index > -1) {\n\t\t\toutput.splice(index, 1);\n\t\t}\n\t});\n\n\treturn output;\n};\n\nFrozenRows.prototype.freezeRow = function (row) {\n\tif (!row.modules.frozen) {\n\t\trow.modules.frozen = true;\n\t\tthis.topElement.appendChild(row.getElement());\n\t\trow.initialize();\n\t\trow.normalizeHeight();\n\t\tthis.table.rowManager.adjustTableSize();\n\n\t\tthis.rows.push(row);\n\n\t\tthis.table.rowManager.refreshActiveData(\"display\");\n\n\t\tthis.styleRows();\n\t} else {\n\t\tconsole.warn(\"Freeze Error - Row is already frozen\");\n\t}\n};\n\nFrozenRows.prototype.unfreezeRow = function (row) {\n\tvar index = this.rows.indexOf(row);\n\n\tif (row.modules.frozen) {\n\n\t\trow.modules.frozen = false;\n\n\t\tthis.detachRow(row);\n\n\t\tthis.table.rowManager.adjustTableSize();\n\n\t\tthis.table.rowManager.refreshActiveData(\"display\");\n\n\t\tif (this.rows.length) {\n\t\t\tthis.styleRows();\n\t\t}\n\t} else {\n\t\tconsole.warn(\"Freeze Error - Row is already unfrozen\");\n\t}\n};\n\nFrozenRows.prototype.detachRow = function (row) {\n\tvar index = this.rows.indexOf(row);\n\n\tif (index > -1) {\n\t\tvar rowEl = row.getElement();\n\t\trowEl.parentNode.removeChild(rowEl);\n\n\t\tthis.rows.splice(index, 1);\n\t}\n};\n\nFrozenRows.prototype.styleRows = function (row) {\n\tvar self = this;\n\n\tthis.rows.forEach(function (row, i) {\n\t\tself.table.rowManager.styleRow(row, i);\n\t});\n};\n\nTabulator.prototype.registerModule(\"frozenRows\", FrozenRows);\n\n//public group object\nvar GroupComponent = function GroupComponent(group) {\n\tthis._group = group;\n\tthis.type = \"GroupComponent\";\n};\n\nGroupComponent.prototype.getKey = function () {\n\treturn this._group.key;\n};\n\nGroupComponent.prototype.getField = function () {\n\treturn this._group.field;\n};\n\nGroupComponent.prototype.getElement = function () {\n\treturn this._group.element;\n};\n\nGroupComponent.prototype.getRows = function () {\n\treturn this._group.getRows(true);\n};\n\nGroupComponent.prototype.getSubGroups = function () {\n\treturn this._group.getSubGroups(true);\n};\n\nGroupComponent.prototype.getParentGroup = function () {\n\treturn this._group.parent ? this._group.parent.getComponent() : false;\n};\n\nGroupComponent.prototype.getVisibility = function () {\n\tconsole.warn(\"getVisibility function is deprecated, you should now use the isVisible function\");\n\treturn this._group.visible;\n};\n\nGroupComponent.prototype.isVisible = function () {\n\treturn this._group.visible;\n};\n\nGroupComponent.prototype.show = function () {\n\tthis._group.show();\n};\n\nGroupComponent.prototype.hide = function () {\n\tthis._group.hide();\n};\n\nGroupComponent.prototype.toggle = function () {\n\tthis._group.toggleVisibility();\n};\n\nGroupComponent.prototype._getSelf = function () {\n\treturn this._group;\n};\n\nGroupComponent.prototype.getTable = function () {\n\treturn this._group.groupManager.table;\n};\n\n//////////////////////////////////////////////////\n//////////////// Group Functions /////////////////\n//////////////////////////////////////////////////\n\nvar Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {\n\n\tthis.groupManager = groupManager;\n\tthis.parent = parent;\n\tthis.key = key;\n\tthis.level = level;\n\tthis.field = field;\n\tthis.hasSubGroups = level < groupManager.groupIDLookups.length - 1;\n\tthis.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;\n\tthis.type = \"group\"; //type of element\n\tthis.old = oldGroup;\n\tthis.rows = [];\n\tthis.groups = [];\n\tthis.groupList = [];\n\tthis.generator = generator;\n\tthis.elementContents = false;\n\tthis.height = 0;\n\tthis.outerHeight = 0;\n\tthis.initialized = false;\n\tthis.calcs = {};\n\tthis.initialized = false;\n\tthis.modules = {};\n\tthis.arrowElement = false;\n\n\tthis.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== \"undefined\" ? groupManager.startOpen[level] : groupManager.startOpen[0];\n\n\tthis.component = null;\n\n\tthis.createElements();\n\tthis.addBindings();\n\n\tthis.createValueGroups();\n};\n\nGroup.prototype.wipe = function () {\n\tif (this.groupList.length) {\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tgroup.wipe();\n\t\t});\n\t} else {\n\t\tthis.element = false;\n\t\tthis.arrowElement = false;\n\t\tthis.elementContents = false;\n\t}\n};\n\nGroup.prototype.createElements = function () {\n\tvar arrow = document.createElement(\"div\");\n\tarrow.classList.add(\"tabulator-arrow\");\n\n\tthis.element = document.createElement(\"div\");\n\tthis.element.classList.add(\"tabulator-row\");\n\tthis.element.classList.add(\"tabulator-group\");\n\tthis.element.classList.add(\"tabulator-group-level-\" + this.level);\n\tthis.element.setAttribute(\"role\", \"rowgroup\");\n\n\tthis.arrowElement = document.createElement(\"div\");\n\tthis.arrowElement.classList.add(\"tabulator-group-toggle\");\n\tthis.arrowElement.appendChild(arrow);\n\n\t//setup movable rows\n\tif (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists(\"moveRow\")) {\n\t\tthis.groupManager.table.modules.moveRow.initializeGroupHeader(this);\n\t}\n};\n\nGroup.prototype.createValueGroups = function () {\n\tvar _this68 = this;\n\n\tvar level = this.level + 1;\n\tif (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {\n\t\tthis.groupManager.allowedValues[level].forEach(function (value) {\n\t\t\t_this68._createGroup(value, level);\n\t\t});\n\t}\n};\n\nGroup.prototype.addBindings = function () {\n\tvar self = this,\n\t dblTap,\n\t tapHold,\n\t tap,\n\t toggleElement;\n\n\t//handle group click events\n\tif (self.groupManager.table.options.groupClick) {\n\t\tself.element.addEventListener(\"click\", function (e) {\n\t\t\tself.groupManager.table.options.groupClick.call(self.groupManager.table, e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.groupManager.table.options.groupDblClick) {\n\t\tself.element.addEventListener(\"dblclick\", function (e) {\n\t\t\tself.groupManager.table.options.groupDblClick.call(self.groupManager.table, e, self.getComponent());\n\t\t});\n\t}\n\n\tif (self.groupManager.table.options.groupContext) {\n\t\tself.element.addEventListener(\"contextmenu\", function (e) {\n\t\t\tself.groupManager.table.options.groupContext.call(self.groupManager.table, e, self.getComponent());\n\t\t});\n\t}\n\n\tif ((self.groupManager.table.options.groupContextMenu || self.groupManager.table.options.groupClickMenu) && self.groupManager.table.modExists(\"menu\")) {\n\t\tself.groupManager.table.modules.menu.initializeGroup.call(self.groupManager.table.modules.menu, self);\n\t}\n\n\tif (self.groupManager.table.options.groupTap) {\n\n\t\ttap = false;\n\n\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\ttap = true;\n\t\t}, { passive: true });\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\tif (tap) {\n\t\t\t\tself.groupManager.table.options.groupTap(e, self.getComponent());\n\t\t\t}\n\n\t\t\ttap = false;\n\t\t});\n\t}\n\n\tif (self.groupManager.table.options.groupDblTap) {\n\n\t\tdblTap = null;\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\n\t\t\tif (dblTap) {\n\t\t\t\tclearTimeout(dblTap);\n\t\t\t\tdblTap = null;\n\n\t\t\t\tself.groupManager.table.options.groupDblTap(e, self.getComponent());\n\t\t\t} else {\n\n\t\t\t\tdblTap = setTimeout(function () {\n\t\t\t\t\tclearTimeout(dblTap);\n\t\t\t\t\tdblTap = null;\n\t\t\t\t}, 300);\n\t\t\t}\n\t\t});\n\t}\n\n\tif (self.groupManager.table.options.groupTapHold) {\n\n\t\ttapHold = null;\n\n\t\tself.element.addEventListener(\"touchstart\", function (e) {\n\t\t\tclearTimeout(tapHold);\n\n\t\t\ttapHold = setTimeout(function () {\n\t\t\t\tclearTimeout(tapHold);\n\t\t\t\ttapHold = null;\n\t\t\t\ttap = false;\n\t\t\t\tself.groupManager.table.options.groupTapHold(e, self.getComponent());\n\t\t\t}, 1000);\n\t\t}, { passive: true });\n\n\t\tself.element.addEventListener(\"touchend\", function (e) {\n\t\t\tclearTimeout(tapHold);\n\t\t\ttapHold = null;\n\t\t});\n\t}\n\n\tif (self.groupManager.table.options.groupToggleElement) {\n\t\ttoggleElement = self.groupManager.table.options.groupToggleElement == \"arrow\" ? self.arrowElement : self.element;\n\n\t\ttoggleElement.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t\te.stopImmediatePropagation();\n\t\t\tself.toggleVisibility();\n\t\t});\n\t}\n};\n\nGroup.prototype._createGroup = function (groupID, level) {\n\tvar groupKey = level + \"_\" + groupID;\n\tvar group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);\n\n\tthis.groups[groupKey] = group;\n\tthis.groupList.push(group);\n};\n\nGroup.prototype._addRowToGroup = function (row) {\n\n\tvar level = this.level + 1;\n\n\tif (this.hasSubGroups) {\n\t\tvar groupID = this.groupManager.groupIDLookups[level].func(row.getData()),\n\t\t groupKey = level + \"_\" + groupID;\n\n\t\tif (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {\n\t\t\tif (this.groups[groupKey]) {\n\t\t\t\tthis.groups[groupKey].addRow(row);\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.groups[groupKey]) {\n\t\t\t\tthis._createGroup(groupID, level);\n\t\t\t}\n\n\t\t\tthis.groups[groupKey].addRow(row);\n\t\t}\n\t}\n};\n\nGroup.prototype._addRow = function (row) {\n\tthis.rows.push(row);\n\trow.modules.group = this;\n};\n\nGroup.prototype.insertRow = function (row, to, after) {\n\tvar data = this.conformRowData({});\n\n\trow.updateData(data);\n\n\tvar toIndex = this.rows.indexOf(to);\n\n\tif (toIndex > -1) {\n\t\tif (after) {\n\t\t\tthis.rows.splice(toIndex + 1, 0, row);\n\t\t} else {\n\t\t\tthis.rows.splice(toIndex, 0, row);\n\t\t}\n\t} else {\n\t\tif (after) {\n\t\t\tthis.rows.push(row);\n\t\t} else {\n\t\t\tthis.rows.unshift(row);\n\t\t}\n\t}\n\n\trow.modules.group = this;\n\n\tthis.generateGroupHeaderContents();\n\n\tif (this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\") {\n\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t}\n\n\tthis.groupManager.updateGroupRows(true);\n};\n\nGroup.prototype.scrollHeader = function (left) {\n\tthis.arrowElement.style.marginLeft = left;\n\n\tthis.groupList.forEach(function (child) {\n\t\tchild.scrollHeader(left);\n\t});\n};\n\nGroup.prototype.getRowIndex = function (row) {};\n\n//update row data to match grouping contraints\nGroup.prototype.conformRowData = function (data) {\n\tif (this.field) {\n\t\tdata[this.field] = this.key;\n\t} else {\n\t\tconsole.warn(\"Data Conforming Error - Cannot conform row data to match new group as groupBy is a function\");\n\t}\n\n\tif (this.parent) {\n\t\tdata = this.parent.conformRowData(data);\n\t}\n\n\treturn data;\n};\n\nGroup.prototype.removeRow = function (row) {\n\tvar index = this.rows.indexOf(row);\n\tvar el = row.getElement();\n\n\tif (index > -1) {\n\t\tthis.rows.splice(index, 1);\n\t}\n\n\tif (!this.groupManager.table.options.groupValues && !this.rows.length) {\n\t\tif (this.parent) {\n\t\t\tthis.parent.removeGroup(this);\n\t\t} else {\n\t\t\tthis.groupManager.removeGroup(this);\n\t\t}\n\n\t\tthis.groupManager.updateGroupRows(true);\n\t} else {\n\n\t\tif (el.parentNode) {\n\t\t\tel.parentNode.removeChild(el);\n\t\t}\n\n\t\tthis.generateGroupHeaderContents();\n\n\t\tif (this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.options.columnCalcs != \"table\") {\n\t\t\tthis.groupManager.table.modules.columnCalcs.recalcGroup(this);\n\t\t}\n\t}\n};\n\nGroup.prototype.removeGroup = function (group) {\n\tvar groupKey = group.level + \"_\" + group.key,\n\t index;\n\n\tif (this.groups[groupKey]) {\n\t\tdelete this.groups[groupKey];\n\n\t\tindex = this.groupList.indexOf(group);\n\n\t\tif (index > -1) {\n\t\t\tthis.groupList.splice(index, 1);\n\t\t}\n\n\t\tif (!this.groupList.length) {\n\t\t\tif (this.parent) {\n\t\t\t\tthis.parent.removeGroup(this);\n\t\t\t} else {\n\t\t\t\tthis.groupManager.removeGroup(this);\n\t\t\t}\n\t\t}\n\t}\n};\n\nGroup.prototype.getHeadersAndRows = function (noCalc) {\n\tvar output = [];\n\n\toutput.push(this);\n\n\tthis._visSet();\n\n\tif (this.visible) {\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\toutput = output.concat(group.getHeadersAndRows(noCalc));\n\t\t\t});\n\t\t} else {\n\t\t\tif (!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {\n\t\t\t\tif (this.calcs.top) {\n\t\t\t\t\tthis.calcs.top.detachElement();\n\t\t\t\t\tthis.calcs.top.deleteCells();\n\t\t\t\t}\n\n\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\toutput.push(this.calcs.top);\n\t\t\t}\n\n\t\t\toutput = output.concat(this.rows);\n\n\t\t\tif (!noCalc && this.groupManager.table.options.columnCalcs != \"table\" && this.groupManager.table.modExists(\"columnCalcs\") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {\n\t\t\t\tif (this.calcs.bottom) {\n\t\t\t\t\tthis.calcs.bottom.detachElement();\n\t\t\t\t\tthis.calcs.bottom.deleteCells();\n\t\t\t\t}\n\n\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (!this.groupList.length && this.groupManager.table.options.columnCalcs != \"table\") {\n\n\t\t\tif (this.groupManager.table.modExists(\"columnCalcs\")) {\n\n\t\t\t\tif (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {\n\t\t\t\t\tif (this.calcs.top) {\n\t\t\t\t\t\tthis.calcs.top.detachElement();\n\t\t\t\t\t\tthis.calcs.top.deleteCells();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.groupManager.table.options.groupClosedShowCalcs) {\n\t\t\t\t\t\tthis.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);\n\t\t\t\t\t\toutput.push(this.calcs.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {\n\t\t\t\t\tif (this.calcs.bottom) {\n\t\t\t\t\t\tthis.calcs.bottom.detachElement();\n\t\t\t\t\t\tthis.calcs.bottom.deleteCells();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.groupManager.table.options.groupClosedShowCalcs) {\n\t\t\t\t\t\tthis.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);\n\t\t\t\t\t\toutput.push(this.calcs.bottom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output;\n};\n\nGroup.prototype.getData = function (visible, transform) {\n\tvar self = this,\n\t output = [];\n\n\tthis._visSet();\n\n\tif (!visible || visible && this.visible) {\n\t\tthis.rows.forEach(function (row) {\n\t\t\toutput.push(row.getData(transform || \"data\"));\n\t\t});\n\t}\n\n\treturn output;\n};\n\n// Group.prototype.getRows = function(){\n// \tthis._visSet();\n\n// \treturn this.visible ? this.rows : [];\n// };\n\nGroup.prototype.getRowCount = function () {\n\tvar count = 0;\n\n\tif (this.groupList.length) {\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tcount += group.getRowCount();\n\t\t});\n\t} else {\n\t\tcount = this.rows.length;\n\t}\n\treturn count;\n};\n\nGroup.prototype.toggleVisibility = function () {\n\tif (this.visible) {\n\t\tthis.hide();\n\t} else {\n\t\tthis.show();\n\t}\n};\n\nGroup.prototype.hide = function () {\n\tthis.visible = false;\n\n\tif (this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination) {\n\n\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\n\t\t\t\tvar rows = group.getHeadersAndRows();\n\n\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\trow.detachElement();\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tthis.rows.forEach(function (row) {\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\trowEl.parentNode.removeChild(rowEl);\n\t\t\t});\n\t\t}\n\n\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\n\n\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\n\t} else {\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\n\tthis.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);\n};\n\nGroup.prototype.show = function () {\n\tvar self = this;\n\n\tself.visible = true;\n\n\tif (this.groupManager.table.rowManager.getRenderMode() == \"classic\" && !this.groupManager.table.options.pagination) {\n\n\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\n\t\tvar prev = self.getElement();\n\n\t\tif (this.groupList.length) {\n\t\t\tthis.groupList.forEach(function (group) {\n\t\t\t\tvar rows = group.getHeadersAndRows();\n\n\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\t\trow.initialize();\n\t\t\t\t\tprev = rowEl;\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tself.rows.forEach(function (row) {\n\t\t\t\tvar rowEl = row.getElement();\n\t\t\t\tprev.parentNode.insertBefore(rowEl, prev.nextSibling);\n\t\t\t\trow.initialize();\n\t\t\t\tprev = rowEl;\n\t\t\t});\n\t\t}\n\n\t\tthis.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());\n\n\t\tthis.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();\n\t} else {\n\t\tthis.groupManager.updateGroupRows(true);\n\t}\n\n\tthis.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);\n};\n\nGroup.prototype._visSet = function () {\n\tvar data = [];\n\n\tif (typeof this.visible == \"function\") {\n\n\t\tthis.rows.forEach(function (row) {\n\t\t\tdata.push(row.getData());\n\t\t});\n\n\t\tthis.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());\n\t}\n};\n\nGroup.prototype.getRowGroup = function (row) {\n\tvar match = false;\n\tif (this.groupList.length) {\n\t\tthis.groupList.forEach(function (group) {\n\t\t\tvar result = group.getRowGroup(row);\n\n\t\t\tif (result) {\n\t\t\t\tmatch = result;\n\t\t\t}\n\t\t});\n\t} else {\n\t\tif (this.rows.find(function (item) {\n\t\t\treturn item === row;\n\t\t})) {\n\t\t\tmatch = this;\n\t\t}\n\t}\n\n\treturn match;\n};\n\nGroup.prototype.getSubGroups = function (component) {\n\tvar output = [];\n\n\tthis.groupList.forEach(function (child) {\n\t\toutput.push(component ? child.getComponent() : child);\n\t});\n\n\treturn output;\n};\n\nGroup.prototype.getRows = function (compoment) {\n\tvar output = [];\n\n\tthis.rows.forEach(function (row) {\n\t\toutput.push(compoment ? row.getComponent() : row);\n\t});\n\n\treturn output;\n};\n\nGroup.prototype.generateGroupHeaderContents = function () {\n\tvar data = [];\n\n\tthis.rows.forEach(function (row) {\n\t\tdata.push(row.getData());\n\t});\n\n\tthis.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());\n\n\twhile (this.element.firstChild) {\n\t\tthis.element.removeChild(this.element.firstChild);\n\t}if (typeof this.elementContents === \"string\") {\n\t\tthis.element.innerHTML = this.elementContents;\n\t} else {\n\t\tthis.element.appendChild(this.elementContents);\n\t}\n\n\tthis.element.insertBefore(this.arrowElement, this.element.firstChild);\n};\n\nGroup.prototype.getPath = function () {\n\tvar path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n\tpath.unshift(this.key);\n\tif (this.parent) {\n\t\tthis.parent.getPath(path);\n\t}\n\treturn path;\n};\n////////////// Standard Row Functions //////////////\n\nGroup.prototype.getElement = function () {\n\tthis.addBindingsd = false;\n\n\tthis._visSet();\n\n\tif (this.visible) {\n\t\tthis.element.classList.add(\"tabulator-group-visible\");\n\t} else {\n\t\tthis.element.classList.remove(\"tabulator-group-visible\");\n\t}\n\n\tfor (var i = 0; i < this.element.childNodes.length; ++i) {\n\t\tthis.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);\n\t}\n\n\tthis.generateGroupHeaderContents();\n\n\t// this.addBindings();\n\n\treturn this.element;\n};\n\nGroup.prototype.detachElement = function () {\n\tif (this.element && this.element.parentNode) {\n\t\tthis.element.parentNode.removeChild(this.element);\n\t}\n};\n\n//normalize the height of elements in the row\nGroup.prototype.normalizeHeight = function () {\n\tthis.setHeight(this.element.clientHeight);\n};\n\nGroup.prototype.initialize = function (force) {\n\tif (!this.initialized || force) {\n\t\tthis.normalizeHeight();\n\t\tthis.initialized = true;\n\t}\n};\n\nGroup.prototype.reinitialize = function () {\n\tthis.initialized = false;\n\tthis.height = 0;\n\n\tif (Tabulator.prototype.helpers.elVisible(this.element)) {\n\t\tthis.initialize(true);\n\t}\n};\n\nGroup.prototype.setHeight = function (height) {\n\tif (this.height != height) {\n\t\tthis.height = height;\n\t\tthis.outerHeight = this.element.offsetHeight;\n\t}\n};\n\n//return rows outer height\nGroup.prototype.getHeight = function () {\n\treturn this.outerHeight;\n};\n\nGroup.prototype.getGroup = function () {\n\treturn this;\n};\n\nGroup.prototype.reinitializeHeight = function () {};\nGroup.prototype.calcHeight = function () {};\nGroup.prototype.setCellHeight = function () {};\nGroup.prototype.clearCellHeight = function () {};\n\n//////////////// Object Generation /////////////////\nGroup.prototype.getComponent = function () {\n\tif (!this.component) {\n\t\tthis.component = new GroupComponent(this);\n\t}\n\n\treturn this.component;\n};\n\n//////////////////////////////////////////////////\n////////////// Group Row Extension ///////////////\n//////////////////////////////////////////////////\n\nvar GroupRows = function GroupRows(table) {\n\n\tthis.table = table; //hold Tabulator object\n\n\tthis.groupIDLookups = false; //enable table grouping and set field to group by\n\tthis.startOpen = [function () {\n\t\treturn false;\n\t}]; //starting state of group\n\tthis.headerGenerator = [function () {\n\t\treturn \"\";\n\t}];\n\tthis.groupList = []; //ordered list of groups\n\tthis.allowedValues = false;\n\tthis.groups = {}; //hold row groups\n\tthis.displayIndex = 0; //index in display pipeline\n};\n\n//initialize group configuration\nGroupRows.prototype.initialize = function () {\n\tvar self = this,\n\t groupBy = self.table.options.groupBy,\n\t startOpen = self.table.options.groupStartOpen,\n\t groupHeader = self.table.options.groupHeader;\n\n\tthis.allowedValues = self.table.options.groupValues;\n\n\tif (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {\n\t\tconsole.warn(\"Error creating group headers, groupHeader array is shorter than groupBy array\");\n\t}\n\n\tself.headerGenerator = [function () {\n\t\treturn \"\";\n\t}];\n\tthis.startOpen = [function () {\n\t\treturn false;\n\t}]; //starting state of group\n\n\tself.table.modules.localize.bind(\"groups|item\", function (langValue, lang) {\n\t\tself.headerGenerator[0] = function (value, count, data) {\n\t\t\t//header layout function\n\t\t\treturn (typeof value === \"undefined\" ? \"\" : value) + \"<span>(\" + count + \" \" + (count === 1 ? langValue : lang.groups.items) + \")</span>\";\n\t\t};\n\t});\n\n\tthis.groupIDLookups = [];\n\n\tif (Array.isArray(groupBy) || groupBy) {\n\t\tif (this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"table\" && this.table.options.columnCalcs != \"both\") {\n\t\t\tthis.table.modules.columnCalcs.removeCalcs();\n\t\t}\n\t} else {\n\t\tif (this.table.modExists(\"columnCalcs\") && this.table.options.columnCalcs != \"group\") {\n\n\t\t\tvar cols = this.table.columnManager.getRealColumns();\n\n\t\t\tcols.forEach(function (col) {\n\t\t\t\tif (col.definition.topCalc) {\n\t\t\t\t\tself.table.modules.columnCalcs.initializeTopRow();\n\t\t\t\t}\n\n\t\t\t\tif (col.definition.bottomCalc) {\n\t\t\t\t\tself.table.modules.columnCalcs.initializeBottomRow();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tif (!Array.isArray(groupBy)) {\n\t\tgroupBy = [groupBy];\n\t}\n\n\tgroupBy.forEach(function (group, i) {\n\t\tvar lookupFunc, column;\n\n\t\tif (typeof group == \"function\") {\n\t\t\tlookupFunc = group;\n\t\t} else {\n\t\t\tcolumn = self.table.columnManager.getColumnByField(group);\n\n\t\t\tif (column) {\n\t\t\t\tlookupFunc = function lookupFunc(data) {\n\t\t\t\t\treturn column.getFieldValue(data);\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tlookupFunc = function lookupFunc(data) {\n\t\t\t\t\treturn data[group];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tself.groupIDLookups.push({\n\t\t\tfield: typeof group === \"function\" ? false : group,\n\t\t\tfunc: lookupFunc,\n\t\t\tvalues: self.allowedValues ? self.allowedValues[i] : false\n\t\t});\n\t});\n\n\tif (startOpen) {\n\n\t\tif (!Array.isArray(startOpen)) {\n\t\t\tstartOpen = [startOpen];\n\t\t}\n\n\t\tstartOpen.forEach(function (level) {\n\t\t\tlevel = typeof level == \"function\" ? level : function () {\n\t\t\t\treturn true;\n\t\t\t};\n\t\t});\n\n\t\tself.startOpen = startOpen;\n\t}\n\n\tif (groupHeader) {\n\t\tself.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];\n\t}\n\n\tthis.initialized = true;\n};\n\nGroupRows.prototype.setDisplayIndex = function (index) {\n\tthis.displayIndex = index;\n};\n\nGroupRows.prototype.getDisplayIndex = function () {\n\treturn this.displayIndex;\n};\n\n//return appropriate rows with group headers\nGroupRows.prototype.getRows = function (rows) {\n\tif (this.groupIDLookups.length) {\n\n\t\tthis.table.options.dataGrouping.call(this.table);\n\n\t\tthis.generateGroups(rows);\n\n\t\tif (this.table.options.dataGrouped) {\n\t\t\tthis.table.options.dataGrouped.call(this.table, this.getGroups(true));\n\t\t}\n\n\t\treturn this.updateGroupRows();\n\t} else {\n\t\treturn rows.slice(0);\n\t}\n};\n\nGroupRows.prototype.getGroups = function (compoment) {\n\tvar groupComponents = [];\n\n\tthis.groupList.forEach(function (group) {\n\t\tgroupComponents.push(compoment ? group.getComponent() : group);\n\t});\n\n\treturn groupComponents;\n};\n\nGroupRows.prototype.getChildGroups = function (group) {\n\tvar _this69 = this;\n\n\tvar groupComponents = [];\n\n\tif (!group) {\n\t\tgroup = this;\n\t}\n\n\tgroup.groupList.forEach(function (child) {\n\t\tif (child.groupList.length) {\n\t\t\tgroupComponents = groupComponents.concat(_this69.getChildGroups(child));\n\t\t} else {\n\t\t\tgroupComponents.push(child);\n\t\t}\n\t});\n\n\treturn groupComponents;\n};\n\nGroupRows.prototype.wipe = function () {\n\tthis.groupList.forEach(function (group) {\n\t\tgroup.wipe();\n\t});\n};\n\nGroupRows.prototype.pullGroupListData = function (groupList) {\n\tvar self = this;\n\tvar groupListData = [];\n\n\tgroupList.forEach(function (group) {\n\t\tvar groupHeader = {};\n\t\tgroupHeader.level = 0;\n\t\tgroupHeader.rowCount = 0;\n\t\tgroupHeader.headerContent = \"\";\n\t\tvar childData = [];\n\n\t\tif (group.hasSubGroups) {\n\t\t\tchildData = self.pullGroupListData(group.groupList);\n\n\t\t\tgroupHeader.level = group.level;\n\t\t\tgroupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers\n\t\t\tgroupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);\n\n\t\t\tgroupListData.push(groupHeader);\n\t\t\tgroupListData = groupListData.concat(childData);\n\t\t} else {\n\t\t\tgroupHeader.level = group.level;\n\t\t\tgroupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);\n\t\t\tgroupHeader.rowCount = group.getRows().length;\n\n\t\t\tgroupListData.push(groupHeader);\n\n\t\t\tgroup.getRows().forEach(function (row) {\n\t\t\t\tgroupListData.push(row.getData(\"data\"));\n\t\t\t});\n\t\t}\n\t});\n\n\treturn groupListData;\n};\n\nGroupRows.prototype.getGroupedData = function () {\n\n\treturn this.pullGroupListData(this.groupList);\n};\n\nGroupRows.prototype.getRowGroup = function (row) {\n\tvar match = false;\n\n\tthis.groupList.forEach(function (group) {\n\t\tvar result = group.getRowGroup(row);\n\n\t\tif (result) {\n\t\t\tmatch = result;\n\t\t}\n\t});\n\n\treturn match;\n};\n\nGroupRows.prototype.countGroups = function () {\n\treturn this.groupList.length;\n};\n\nGroupRows.prototype.generateGroups = function (rows) {\n\tvar self = this,\n\t oldGroups = self.groups;\n\n\tself.groups = {};\n\tself.groupList = [];\n\n\tif (this.allowedValues && this.allowedValues[0]) {\n\t\tthis.allowedValues[0].forEach(function (value) {\n\t\t\tself.createGroup(value, 0, oldGroups);\n\t\t});\n\n\t\trows.forEach(function (row) {\n\t\t\tself.assignRowToExistingGroup(row, oldGroups);\n\t\t});\n\t} else {\n\t\trows.forEach(function (row) {\n\t\t\tself.assignRowToGroup(row, oldGroups);\n\t\t});\n\t}\n};\n\nGroupRows.prototype.createGroup = function (groupID, level, oldGroups) {\n\tvar groupKey = level + \"_\" + groupID,\n\t group;\n\n\toldGroups = oldGroups || [];\n\n\tgroup = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);\n\n\tthis.groups[groupKey] = group;\n\tthis.groupList.push(group);\n};\n\n// GroupRows.prototype.assignRowToGroup = function(row, oldGroups){\n// \tvar groupID = this.groupIDLookups[0].func(row.getData()),\n// \tgroupKey = \"0_\" + groupID;\n\n// \tif(!this.groups[groupKey]){\n// \t\tthis.createGroup(groupID, 0, oldGroups);\n// \t}\n\n// \tthis.groups[groupKey].addRow(row);\n// };\n\nGroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {\n\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t groupKey = \"0_\" + groupID;\n\n\tif (this.groups[groupKey]) {\n\t\tthis.groups[groupKey].addRow(row);\n\t}\n};\n\nGroupRows.prototype.assignRowToGroup = function (row, oldGroups) {\n\tvar groupID = this.groupIDLookups[0].func(row.getData()),\n\t newGroupNeeded = !this.groups[\"0_\" + groupID];\n\n\tif (newGroupNeeded) {\n\t\tthis.createGroup(groupID, 0, oldGroups);\n\t}\n\n\tthis.groups[\"0_\" + groupID].addRow(row);\n\n\treturn !newGroupNeeded;\n};\n\nGroupRows.prototype.reassignRowToGroup = function (row) {\n\tvar oldRowGroup = row.getGroup(),\n\t oldGroupPath = oldRowGroup.getPath(),\n\t newGroupPath = this.getExpectedPath(row),\n\t samePath = true;\n\t// figure out if new group path is the same as old group path\n\tvar samePath = oldGroupPath.length == newGroupPath.length && oldGroupPath.every(function (element, index) {\n\t\treturn element === newGroupPath[index];\n\t});\n\t// refresh if they new path and old path aren't the same (aka the row's groupings have changed)\n\tif (!samePath) {\n\t\toldRowGroup.removeRow(row);\n\t\tthis.assignRowToGroup(row, self.groups);\n\t\tthis.table.rowManager.refreshActiveData(\"group\", false, true);\n\t}\n};\n\nGroupRows.prototype.getExpectedPath = function (row) {\n\tvar groupPath = [],\n\t rowData = row.getData();\n\tthis.groupIDLookups.forEach(function (groupId) {\n\t\tgroupPath.push(groupId.func(rowData));\n\t});\n\treturn groupPath;\n};\n\nGroupRows.prototype.updateGroupRows = function (force) {\n\tvar self = this,\n\t output = [],\n\t oldRowCount;\n\n\tself.groupList.forEach(function (group) {\n\t\toutput = output.concat(group.getHeadersAndRows());\n\t});\n\n\t//force update of table display\n\tif (force) {\n\n\t\tvar displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());\n\n\t\tif (displayIndex !== true) {\n\t\t\tthis.setDisplayIndex(displayIndex);\n\t\t}\n\n\t\tself.table.rowManager.refreshActiveData(\"group\", true, true);\n\t}\n\n\treturn output;\n};\n\nGroupRows.prototype.scrollHeaders = function (left) {\n\tif (this.table.options.virtualDomHoz) {\n\t\tleft -= this.table.vdomHoz.vDomPadLeft;\n\t}\n\n\tleft = left + \"px\";\n\n\tthis.groupList.forEach(function (group) {\n\t\tgroup.scrollHeader(left);\n\t});\n};\n\nGroupRows.prototype.removeGroup = function (group) {\n\tvar groupKey = group.level + \"_\" + group.key,\n\t index;\n\n\tif (this.groups[groupKey]) {\n\t\tdelete this.groups[groupKey];\n\n\t\tindex = this.groupList.indexOf(group);\n\n\t\tif (index > -1) {\n\t\t\tthis.groupList.splice(index, 1);\n\t\t}\n\t}\n};\n\nTabulator.prototype.registerModule(\"groupRows\", GroupRows);\nvar History = function History(table) {\n\tthis.table = table; //hold Tabulator object\n\n\tthis.history = [];\n\tthis.index = -1;\n};\n\nHistory.prototype.clear = function () {\n\tthis.history = [];\n\tthis.index = -1;\n};\n\nHistory.prototype.action = function (type, component, data) {\n\n\tthis.history = this.history.slice(0, this.index + 1);\n\n\tthis.history.push({\n\t\ttype: type,\n\t\tcomponent: component,\n\t\tdata: data\n\t});\n\n\tthis.index++;\n};\n\nHistory.prototype.getHistoryUndoSize = function () {\n\treturn this.index + 1;\n};\n\nHistory.prototype.getHistoryRedoSize = function () {\n\treturn this.history.length - (this.index + 1);\n};\n\nHistory.prototype.clearComponentHistory = function (component) {\n\tvar index = this.history.findIndex(function (item) {\n\t\treturn item.component === component;\n\t});\n\n\tif (index > -1) {\n\t\tthis.history.splice(index, 1);\n\t\tif (index <= this.index) {\n\t\t\tthis.index--;\n\t\t}\n\n\t\tthis.clearComponentHistory(component);\n\t}\n};\n\nHistory.prototype.undo = function () {\n\n\tif (this.index > -1) {\n\t\tvar action = this.history[this.index];\n\n\t\tthis.undoers[action.type].call(this, action);\n\n\t\tthis.index--;\n\n\t\tthis.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);\n\n\t\treturn true;\n\t} else {\n\t\tconsole.warn(\"History Undo Error - No more history to undo\");\n\t\treturn false;\n\t}\n};\n\nHistory.prototype.redo = function () {\n\tif (this.history.length - 1 > this.index) {\n\n\t\tthis.index++;\n\n\t\tvar action = this.history[this.index];\n\n\t\tthis.redoers[action.type].call(this, action);\n\n\t\tthis.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);\n\n\t\treturn true;\n\t} else {\n\t\tconsole.warn(\"History Redo Error - No more history to redo\");\n\t\treturn false;\n\t}\n};\n\nHistory.prototype.undoers = {\n\tcellEdit: function cellEdit(action) {\n\t\taction.component.setValueProcessData(action.data.oldValue);\n\t},\n\n\trowAdd: function rowAdd(action) {\n\t\taction.component.deleteActual();\n\t},\n\n\trowDelete: function rowDelete(action) {\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowMove: function rowMove(action) {\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);\n\t\tthis.table.rowManager.redraw();\n\t}\n};\n\nHistory.prototype.redoers = {\n\tcellEdit: function cellEdit(action) {\n\t\taction.component.setValueProcessData(action.data.newValue);\n\t},\n\n\trowAdd: function rowAdd(action) {\n\t\tvar newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);\n\n\t\tif (this.table.options.groupBy && this.table.modExists(\"groupRows\")) {\n\t\t\tthis.table.modules.groupRows.updateGroupRows(true);\n\t\t}\n\n\t\tthis._rebindRow(action.component, newRow);\n\t},\n\n\trowDelete: function rowDelete(action) {\n\t\taction.component.deleteActual();\n\t},\n\n\trowMove: function rowMove(action) {\n\t\tthis.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);\n\t\tthis.table.rowManager.redraw();\n\t}\n};\n\n//rebind rows to new element after deletion\nHistory.prototype._rebindRow = function (oldRow, newRow) {\n\tthis.history.forEach(function (action) {\n\t\tif (action.component instanceof Row) {\n\t\t\tif (action.component === oldRow) {\n\t\t\t\taction.component = newRow;\n\t\t\t}\n\t\t} else if (action.component instanceof Cell) {\n\t\t\tif (action.component.row === oldRow) {\n\t\t\t\tvar field = action.component.column.getField();\n\n\t\t\t\tif (field) {\n\t\t\t\t\taction.component = newRow.getCell(field);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\nTabulator.prototype.registerModule(\"history\", History);\nvar HtmlTableImport = function HtmlTableImport(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.fieldIndex = [];\n\tthis.hasIndex = false;\n};\n\nHtmlTableImport.prototype.parseTable = function () {\n\tvar self = this,\n\t element = self.table.element,\n\t options = self.table.options,\n\t columns = options.columns,\n\t headers = element.getElementsByTagName(\"th\"),\n\t rows = element.getElementsByTagName(\"tbody\")[0],\n\t data = [],\n\t newTable;\n\n\tself.hasIndex = false;\n\n\tself.table.options.htmlImporting.call(this.table);\n\n\trows = rows ? rows.getElementsByTagName(\"tr\") : [];\n\n\t//check for tablator inline options\n\tself._extractOptions(element, options);\n\n\tif (headers.length) {\n\t\tself._extractHeaders(headers, rows);\n\t} else {\n\t\tself._generateBlankHeaders(headers, rows);\n\t}\n\n\t//iterate through table rows and build data set\n\tfor (var index = 0; index < rows.length; index++) {\n\t\tvar row = rows[index],\n\t\t cells = row.getElementsByTagName(\"td\"),\n\t\t item = {};\n\n\t\t//create index if the dont exist in table\n\t\tif (!self.hasIndex) {\n\t\t\titem[options.index] = index;\n\t\t}\n\n\t\tfor (var i = 0; i < cells.length; i++) {\n\t\t\tvar cell = cells[i];\n\t\t\tif (typeof this.fieldIndex[i] !== \"undefined\") {\n\t\t\t\titem[this.fieldIndex[i]] = cell.innerHTML;\n\t\t\t}\n\t\t}\n\n\t\t//add row data to item\n\t\tdata.push(item);\n\t}\n\n\t//create new element\n\tvar newElement = document.createElement(\"div\");\n\n\t//transfer attributes to new element\n\tvar attributes = element.attributes;\n\n\t// loop through attributes and apply them on div\n\n\tfor (var i in attributes) {\n\t\tif (_typeof(attributes[i]) == \"object\") {\n\t\t\tnewElement.setAttribute(attributes[i].name, attributes[i].value);\n\t\t}\n\t}\n\n\t// replace table with div element\n\telement.parentNode.replaceChild(newElement, element);\n\n\toptions.data = data;\n\n\tself.table.options.htmlImported.call(this.table);\n\n\t// // newElement.tabulator(options);\n\n\tthis.table.element = newElement;\n};\n\n//extract tabulator attribute options\nHtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {\n\tvar attributes = element.attributes;\n\tvar optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);\n\tvar optionsList = {};\n\n\toptionsArr.forEach(function (item) {\n\t\toptionsList[item.toLowerCase()] = item;\n\t});\n\n\tfor (var index in attributes) {\n\t\tvar attrib = attributes[index];\n\t\tvar name;\n\n\t\tif (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == \"object\" && attrib.name && attrib.name.indexOf(\"tabulator-\") === 0) {\n\t\t\tname = attrib.name.replace(\"tabulator-\", \"\");\n\n\t\t\tif (typeof optionsList[name] !== \"undefined\") {\n\t\t\t\toptions[optionsList[name]] = this._attribValue(attrib.value);\n\t\t\t}\n\t\t}\n\t}\n};\n\n//get value of attribute\nHtmlTableImport.prototype._attribValue = function (value) {\n\tif (value === \"true\") {\n\t\treturn true;\n\t}\n\n\tif (value === \"false\") {\n\t\treturn false;\n\t}\n\n\treturn value;\n};\n\n//find column if it has already been defined\nHtmlTableImport.prototype._findCol = function (title) {\n\tvar match = this.table.options.columns.find(function (column) {\n\t\treturn column.title === title;\n\t});\n\n\treturn match || false;\n};\n\n//extract column from headers\nHtmlTableImport.prototype._extractHeaders = function (headers, rows) {\n\tfor (var index = 0; index < headers.length; index++) {\n\t\tvar header = headers[index],\n\t\t exists = false,\n\t\t col = this._findCol(header.textContent),\n\t\t width,\n\t\t attributes;\n\n\t\tif (col) {\n\t\t\texists = true;\n\t\t} else {\n\t\t\tcol = { title: header.textContent.trim() };\n\t\t}\n\n\t\tif (!col.field) {\n\t\t\tcol.field = header.textContent.trim().toLowerCase().replace(\" \", \"_\");\n\t\t}\n\n\t\twidth = header.getAttribute(\"width\");\n\n\t\tif (width && !col.width) {\n\t\t\tcol.width = width;\n\t\t}\n\n\t\t//check for tablator inline options\n\t\tattributes = header.attributes;\n\n\t\t// //check for tablator inline options\n\t\tthis._extractOptions(header, col, Column.prototype.defaultOptionList);\n\n\t\tthis.fieldIndex[index] = col.field;\n\n\t\tif (col.field == this.table.options.index) {\n\t\t\tthis.hasIndex = true;\n\t\t}\n\n\t\tif (!exists) {\n\t\t\tthis.table.options.columns.push(col);\n\t\t}\n\t}\n};\n\n//generate blank headers\nHtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {\n\tfor (var index = 0; index < headers.length; index++) {\n\t\tvar header = headers[index],\n\t\t col = { title: \"\", field: \"col\" + index };\n\n\t\tthis.fieldIndex[index] = col.field;\n\n\t\tvar width = header.getAttribute(\"width\");\n\n\t\tif (width) {\n\t\t\tcol.width = width;\n\t\t}\n\n\t\tthis.table.options.columns.push(col);\n\t}\n};\n\nTabulator.prototype.registerModule(\"htmlTableImport\", HtmlTableImport);\nvar Keybindings = function Keybindings(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.watchKeys = null;\n\tthis.pressedKeys = null;\n\tthis.keyupBinding = false;\n\tthis.keydownBinding = false;\n};\n\nKeybindings.prototype.initialize = function () {\n\tvar bindings = this.table.options.keybindings,\n\t mergedBindings = {};\n\n\tthis.watchKeys = {};\n\tthis.pressedKeys = [];\n\n\tif (bindings !== false) {\n\n\t\tfor (var key in this.bindings) {\n\t\t\tmergedBindings[key] = this.bindings[key];\n\t\t}\n\n\t\tif (Object.keys(bindings).length) {\n\n\t\t\tfor (var _key in bindings) {\n\t\t\t\tmergedBindings[_key] = bindings[_key];\n\t\t\t}\n\t\t}\n\n\t\tthis.mapBindings(mergedBindings);\n\t\tthis.bindEvents();\n\t}\n};\n\nKeybindings.prototype.mapBindings = function (bindings) {\n\tvar _this70 = this;\n\n\tvar self = this;\n\n\tvar _loop2 = function _loop2(key) {\n\n\t\tif (_this70.actions[key]) {\n\n\t\t\tif (bindings[key]) {\n\n\t\t\t\tif (_typeof(bindings[key]) !== \"object\") {\n\t\t\t\t\tbindings[key] = [bindings[key]];\n\t\t\t\t}\n\n\t\t\t\tbindings[key].forEach(function (binding) {\n\t\t\t\t\tself.mapBinding(key, binding);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Key Binding Error - no such action:\", key);\n\t\t}\n\t};\n\n\tfor (var key in bindings) {\n\t\t_loop2(key);\n\t}\n};\n\nKeybindings.prototype.mapBinding = function (action, symbolsList) {\n\tvar self = this;\n\n\tvar binding = {\n\t\taction: this.actions[action],\n\t\tkeys: [],\n\t\tctrl: false,\n\t\tshift: false,\n\t\tmeta: false\n\t};\n\n\tvar symbols = symbolsList.toString().toLowerCase().split(\" \").join(\"\").split(\"+\");\n\n\tsymbols.forEach(function (symbol) {\n\t\tswitch (symbol) {\n\t\t\tcase \"ctrl\":\n\t\t\t\tbinding.ctrl = true;\n\t\t\t\tbreak;\n\n\t\t\tcase \"shift\":\n\t\t\t\tbinding.shift = true;\n\t\t\t\tbreak;\n\n\t\t\tcase \"meta\":\n\t\t\t\tbinding.meta = true;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tsymbol = parseInt(symbol);\n\t\t\t\tbinding.keys.push(symbol);\n\n\t\t\t\tif (!self.watchKeys[symbol]) {\n\t\t\t\t\tself.watchKeys[symbol] = [];\n\t\t\t\t}\n\n\t\t\t\tself.watchKeys[symbol].push(binding);\n\t\t}\n\t});\n};\n\nKeybindings.prototype.bindEvents = function () {\n\tvar self = this;\n\n\tthis.keyupBinding = function (e) {\n\t\tvar code = e.keyCode;\n\t\tvar bindings = self.watchKeys[code];\n\n\t\tif (bindings) {\n\n\t\t\tself.pressedKeys.push(code);\n\n\t\t\tbindings.forEach(function (binding) {\n\t\t\t\tself.checkBinding(e, binding);\n\t\t\t});\n\t\t}\n\t};\n\n\tthis.keydownBinding = function (e) {\n\t\tvar code = e.keyCode;\n\t\tvar bindings = self.watchKeys[code];\n\n\t\tif (bindings) {\n\n\t\t\tvar index = self.pressedKeys.indexOf(code);\n\n\t\t\tif (index > -1) {\n\t\t\t\tself.pressedKeys.splice(index, 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tthis.table.element.addEventListener(\"keydown\", this.keyupBinding);\n\n\tthis.table.element.addEventListener(\"keyup\", this.keydownBinding);\n};\n\nKeybindings.prototype.clearBindings = function () {\n\tif (this.keyupBinding) {\n\t\tthis.table.element.removeEventListener(\"keydown\", this.keyupBinding);\n\t}\n\n\tif (this.keydownBinding) {\n\t\tthis.table.element.removeEventListener(\"keyup\", this.keydownBinding);\n\t}\n};\n\nKeybindings.prototype.checkBinding = function (e, binding) {\n\tvar self = this,\n\t match = true;\n\n\tif (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift && e.metaKey == binding.meta) {\n\t\tbinding.keys.forEach(function (key) {\n\t\t\tvar index = self.pressedKeys.indexOf(key);\n\n\t\t\tif (index == -1) {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t});\n\n\t\tif (match) {\n\t\t\tbinding.action.call(self, e);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n//default bindings\nKeybindings.prototype.bindings = {\n\tnavPrev: \"shift + 9\",\n\tnavNext: 9,\n\tnavUp: 38,\n\tnavDown: 40,\n\tscrollPageUp: 33,\n\tscrollPageDown: 34,\n\tscrollToStart: 36,\n\tscrollToEnd: 35,\n\tundo: \"ctrl + 90\",\n\tredo: \"ctrl + 89\",\n\tcopyToClipboard: \"ctrl + 67\"\n};\n\n//default actions\nKeybindings.prototype.actions = {\n\tkeyBlock: function keyBlock(e) {\n\t\te.stopPropagation();\n\t\te.preventDefault();\n\t},\n\tscrollPageUp: function scrollPageUp(e) {\n\t\tvar rowManager = this.table.rowManager,\n\t\t newPos = rowManager.scrollTop - rowManager.height,\n\t\t scrollMax = rowManager.element.scrollHeight;\n\n\t\te.preventDefault();\n\n\t\tif (rowManager.displayRowsCount) {\n\t\t\tif (newPos >= 0) {\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t} else {\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollPageDown: function scrollPageDown(e) {\n\t\tvar rowManager = this.table.rowManager,\n\t\t newPos = rowManager.scrollTop + rowManager.height,\n\t\t scrollMax = rowManager.element.scrollHeight;\n\n\t\te.preventDefault();\n\n\t\tif (rowManager.displayRowsCount) {\n\t\t\tif (newPos <= scrollMax) {\n\t\t\t\trowManager.element.scrollTop = newPos;\n\t\t\t} else {\n\t\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollToStart: function scrollToStart(e) {\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif (rowManager.displayRowsCount) {\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[0]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tscrollToEnd: function scrollToEnd(e) {\n\t\tvar rowManager = this.table.rowManager;\n\n\t\te.preventDefault();\n\n\t\tif (rowManager.displayRowsCount) {\n\t\t\trowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);\n\t\t}\n\n\t\tthis.table.element.focus();\n\t},\n\tnavPrev: function navPrev(e) {\n\t\tvar cell = false;\n\n\t\tif (this.table.modExists(\"edit\")) {\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\t\t\t\te.preventDefault();\n\t\t\t\tcell.nav().prev();\n\t\t\t}\n\t\t}\n\t},\n\n\tnavNext: function navNext(e) {\n\t\tvar cell = false;\n\t\tvar newRow = this.table.options.tabEndNewRow;\n\t\tvar nav;\n\n\t\tif (this.table.modExists(\"edit\")) {\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tnav = cell.nav();\n\n\t\t\t\tif (!nav.next()) {\n\t\t\t\t\tif (newRow) {\n\n\t\t\t\t\t\tcell.getElement().firstChild.blur();\n\n\t\t\t\t\t\tif (newRow === true) {\n\t\t\t\t\t\t\tnewRow = this.table.addRow({});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (typeof newRow == \"function\") {\n\t\t\t\t\t\t\t\tnewRow = this.table.addRow(newRow(cell.row.getComponent()));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnewRow = this.table.addRow(Object.assign({}, newRow));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tnewRow.then(function () {\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tnav.next();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tnavLeft: function navLeft(e) {\n\t\tvar cell = false;\n\n\t\tif (this.table.modExists(\"edit\")) {\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\t\t\t\te.preventDefault();\n\t\t\t\tcell.nav().left();\n\t\t\t}\n\t\t}\n\t},\n\n\tnavRight: function navRight(e) {\n\t\tvar cell = false;\n\n\t\tif (this.table.modExists(\"edit\")) {\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\t\t\t\te.preventDefault();\n\t\t\t\tcell.nav().right();\n\t\t\t}\n\t\t}\n\t},\n\n\tnavUp: function navUp(e) {\n\t\tvar cell = false;\n\n\t\tif (this.table.modExists(\"edit\")) {\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\t\t\t\te.preventDefault();\n\t\t\t\tcell.nav().up();\n\t\t\t}\n\t\t}\n\t},\n\n\tnavDown: function navDown(e) {\n\t\tvar cell = false;\n\n\t\tif (this.table.modExists(\"edit\")) {\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif (cell) {\n\t\t\t\te.preventDefault();\n\t\t\t\tcell.nav().down();\n\t\t\t}\n\t\t}\n\t},\n\n\tundo: function undo(e) {\n\t\tvar cell = false;\n\t\tif (this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")) {\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif (!cell) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.undo();\n\t\t\t}\n\t\t}\n\t},\n\n\tredo: function redo(e) {\n\t\tvar cell = false;\n\t\tif (this.table.options.history && this.table.modExists(\"history\") && this.table.modExists(\"edit\")) {\n\n\t\t\tcell = this.table.modules.edit.currentCell;\n\n\t\t\tif (!cell) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.table.modules.history.redo();\n\t\t\t}\n\t\t}\n\t},\n\n\tcopyToClipboard: function copyToClipboard(e) {\n\t\tif (!this.table.modules.edit.currentCell) {\n\t\t\tif (this.table.modExists(\"clipboard\", true)) {\n\t\t\t\tthis.table.modules.clipboard.copy(false, true);\n\t\t\t}\n\t\t}\n\t}\n};\n\nTabulator.prototype.registerModule(\"keybindings\", Keybindings);\nvar Menu = function Menu(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.menuElements = [];\n\tthis.blurEvent = this.hideMenu.bind(this);\n\tthis.escEvent = this.escMenu.bind(this);\n\tthis.nestedMenuBlock = false;\n\tthis.positionReversedX = false;\n};\n\nMenu.prototype.initializeColumnHeader = function (column) {\n\tvar _this71 = this;\n\n\tvar headerMenuEl;\n\n\tif (column.definition.headerContextMenu) {\n\t\tcolumn.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, column, column.definition.headerContextMenu));\n\t\tthis.tapHold(column, column.definition.headerContextMenu);\n\t}\n\n\t// if(column.definition.headerClickMenu){\n\t// \tcolumn.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, column, column.definition.headerClickMenu));\n\t// }\n\n\tif (column.definition.headerMenu) {\n\n\t\theaderMenuEl = document.createElement(\"span\");\n\t\theaderMenuEl.classList.add(\"tabulator-header-menu-button\");\n\t\theaderMenuEl.innerHTML = \"⋮\";\n\n\t\theaderMenuEl.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t\te.preventDefault();\n\n\t\t\t_this71.LoadMenuEvent(column, column.definition.headerMenu, e);\n\t\t});\n\n\t\tcolumn.titleElement.insertBefore(headerMenuEl, column.titleElement.firstChild);\n\t}\n};\n\nMenu.prototype.LoadMenuEvent = function (component, menu, e) {\n\tmenu = typeof menu == \"function\" ? menu.call(this.table, component.getComponent(), e) : menu;\n\n\t// if(component instanceof Cell){\n\t// \te.stopImmediatePropagation();\n\t// }\n\n\tthis.loadMenu(e, component, menu);\n};\n\nMenu.prototype.tapHold = function (component, menu) {\n\tvar _this72 = this;\n\n\tvar element = component.getElement(),\n\t tapHold = null,\n\t loaded = false;\n\n\telement.addEventListener(\"touchstart\", function (e) {\n\t\tclearTimeout(tapHold);\n\t\tloaded = false;\n\n\t\ttapHold = setTimeout(function () {\n\t\t\tclearTimeout(tapHold);\n\t\t\ttapHold = null;\n\t\t\tloaded = true;\n\n\t\t\t_this72.LoadMenuEvent(component, menu, e);\n\t\t}, 1000);\n\t}, { passive: true });\n\n\telement.addEventListener(\"touchend\", function (e) {\n\t\tclearTimeout(tapHold);\n\t\ttapHold = null;\n\n\t\tif (loaded) {\n\t\t\te.preventDefault();\n\t\t}\n\t});\n};\n\nMenu.prototype.initializeCell = function (cell) {\n\tif (cell.column.definition.contextMenu) {\n\t\tcell.getElement(true).addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.contextMenu));\n\t\tthis.tapHold(cell, cell.column.definition.contextMenu);\n\t}\n\n\tif (cell.column.definition.clickMenu) {\n\t\tcell.getElement(true).addEventListener(\"click\", this.LoadMenuEvent.bind(this, cell, cell.column.definition.clickMenu));\n\t}\n};\n\nMenu.prototype.initializeRow = function (row) {\n\tif (this.table.options.rowContextMenu) {\n\t\trow.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, row, this.table.options.rowContextMenu));\n\t\tthis.tapHold(row, this.table.options.rowContextMenu);\n\t}\n\n\tif (this.table.options.rowClickMenu) {\n\t\trow.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, row, this.table.options.rowClickMenu));\n\t}\n};\n\nMenu.prototype.initializeGroup = function (group) {\n\tif (this.table.options.groupContextMenu) {\n\t\tgroup.getElement().addEventListener(\"contextmenu\", this.LoadMenuEvent.bind(this, group, this.table.options.groupContextMenu));\n\t\tthis.tapHold(group, this.table.options.groupContextMenu);\n\t}\n\n\tif (this.table.options.groupClickMenu) {\n\t\tgroup.getElement().addEventListener(\"click\", this.LoadMenuEvent.bind(this, group, this.table.options.groupClickMenu));\n\t}\n};\n\nMenu.prototype.loadMenu = function (e, component, menu, parentEl) {\n\tvar _this73 = this;\n\n\tvar touch = !(e instanceof MouseEvent);\n\n\tvar menuEl = document.createElement(\"div\");\n\tmenuEl.classList.add(\"tabulator-menu\");\n\n\tif (!touch) {\n\t\te.preventDefault();\n\t}\n\n\t//abort if no menu set\n\tif (!menu || !menu.length) {\n\t\treturn;\n\t}\n\n\tif (!parentEl) {\n\t\tif (this.nestedMenuBlock) {\n\t\t\t//abort if child menu already open\n\t\t\tif (this.isOpen()) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.nestedMenuBlock = setTimeout(function () {\n\t\t\t\t_this73.nestedMenuBlock = false;\n\t\t\t}, 100);\n\t\t}\n\n\t\tthis.hideMenu();\n\t\tthis.menuElements = [];\n\t}\n\n\tmenu.forEach(function (item) {\n\t\tvar itemEl = document.createElement(\"div\"),\n\t\t label = item.label,\n\t\t disabled = item.disabled;\n\n\t\tif (item.separator) {\n\t\t\titemEl.classList.add(\"tabulator-menu-separator\");\n\t\t} else {\n\t\t\titemEl.classList.add(\"tabulator-menu-item\");\n\n\t\t\tif (typeof label == \"function\") {\n\t\t\t\tlabel = label.call(_this73.table, component.getComponent());\n\t\t\t}\n\n\t\t\tif (label instanceof Node) {\n\t\t\t\titemEl.appendChild(label);\n\t\t\t} else {\n\t\t\t\titemEl.innerHTML = label;\n\t\t\t}\n\n\t\t\tif (typeof disabled == \"function\") {\n\t\t\t\tdisabled = disabled.call(_this73.table, component.getComponent());\n\t\t\t}\n\n\t\t\tif (disabled) {\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item-disabled\");\n\t\t\t\titemEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (item.menu && item.menu.length) {\n\t\t\t\t\titemEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t_this73.hideOldSubMenus(menuEl);\n\t\t\t\t\t\t_this73.loadMenu(e, component, item.menu, itemEl);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tif (item.action) {\n\t\t\t\t\t\titemEl.addEventListener(\"click\", function (e) {\n\t\t\t\t\t\t\titem.action(e, component.getComponent());\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (item.menu && item.menu.length) {\n\t\t\t\titemEl.classList.add(\"tabulator-menu-item-submenu\");\n\t\t\t}\n\t\t}\n\n\t\tmenuEl.appendChild(itemEl);\n\t});\n\n\tmenuEl.addEventListener(\"click\", function (e) {\n\t\t_this73.hideMenu();\n\t});\n\n\tthis.menuElements.push(menuEl);\n\tthis.positionMenu(menuEl, parentEl, touch, e);\n};\n\nMenu.prototype.hideOldSubMenus = function (menuEl) {\n\tvar index = this.menuElements.indexOf(menuEl);\n\n\tif (index > -1) {\n\t\tfor (var _i13 = this.menuElements.length - 1; _i13 > index; _i13--) {\n\t\t\tvar el = this.menuElements[_i13];\n\n\t\t\tif (el.parentNode) {\n\t\t\t\tel.parentNode.removeChild(el);\n\t\t\t}\n\n\t\t\tthis.menuElements.pop();\n\t\t}\n\t}\n};\n\nMenu.prototype.positionMenu = function (element, parentEl, touch, e) {\n\tvar _this74 = this;\n\n\tvar docHeight = Math.max(document.body.offsetHeight, window.innerHeight),\n\t x,\n\t y,\n\t parentOffset;\n\n\tif (!parentEl) {\n\t\tx = touch ? e.touches[0].pageX : e.pageX;\n\t\ty = touch ? e.touches[0].pageY : e.pageY;\n\n\t\tthis.positionReversedX = false;\n\t} else {\n\t\tparentOffset = Tabulator.prototype.helpers.elOffset(parentEl);\n\t\tx = parentOffset.left + parentEl.offsetWidth;\n\t\ty = parentOffset.top - 1;\n\t}\n\n\telement.style.top = y + \"px\";\n\telement.style.left = x + \"px\";\n\n\tsetTimeout(function () {\n\t\t_this74.table.rowManager.element.addEventListener(\"scroll\", _this74.blurEvent);\n\t\tdocument.body.addEventListener(\"click\", _this74.blurEvent);\n\t\tdocument.body.addEventListener(\"contextmenu\", _this74.blurEvent);\n\t\twindow.addEventListener(\"resize\", _this74.blurEvent);\n\t\tdocument.body.addEventListener(\"keydown\", _this74.escEvent);\n\t}, 100);\n\n\tdocument.body.appendChild(element);\n\n\t//move menu to start on bottom edge if it is too close to the edge of the screen\n\tif (y + element.offsetHeight >= docHeight) {\n\t\telement.style.top = \"\";\n\n\t\tif (parentEl) {\n\t\t\telement.style.bottom = docHeight - parentOffset.top - parentEl.offsetHeight - 1 + \"px\";\n\t\t} else {\n\t\t\telement.style.bottom = docHeight - y + \"px\";\n\t\t}\n\t}\n\n\t//move menu to start on right edge if it is too close to the edge of the screen\n\tif (x + element.offsetWidth >= document.body.offsetWidth || this.positionReversedX) {\n\t\telement.style.left = \"\";\n\n\t\tif (parentEl) {\n\t\t\telement.style.right = document.documentElement.offsetWidth - parentOffset.left + \"px\";\n\t\t} else {\n\t\t\telement.style.right = document.documentElement.offsetWidth - x + \"px\";\n\t\t}\n\n\t\tthis.positionReversedX = true;\n\t}\n};\n\nMenu.prototype.isOpen = function () {\n\treturn !!this.menuElements.length;\n};\n\nMenu.prototype.escMenu = function (e) {\n\tif (e.keyCode == 27) {\n\t\tthis.hideMenu();\n\t}\n};\n\nMenu.prototype.hideMenu = function () {\n\tthis.menuElements.forEach(function (menuEl) {\n\t\tif (menuEl.parentNode) {\n\t\t\tmenuEl.parentNode.removeChild(menuEl);\n\t\t}\n\t});\n\n\tdocument.body.removeEventListener(\"keydown\", this.escEvent);\n\tdocument.body.removeEventListener(\"click\", this.blurEvent);\n\tdocument.body.removeEventListener(\"contextmenu\", this.blurEvent);\n\twindow.removeEventListener(\"resize\", this.blurEvent);\n\tthis.table.rowManager.element.removeEventListener(\"scroll\", this.blurEvent);\n};\n\n//default accessors\nMenu.prototype.menus = {};\n\nTabulator.prototype.registerModule(\"menu\", Menu);\nvar MoveColumns = function MoveColumns(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.placeholderElement = this.createPlaceholderElement();\n\tthis.hoverElement = false; //floating column header element\n\tthis.checkTimeout = false; //click check timeout holder\n\tthis.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click\n\tthis.moving = false; //currently moving column\n\tthis.toCol = false; //destination column\n\tthis.toColAfter = false; //position of moving column relative to the desitnation column\n\tthis.startX = 0; //starting position within header element\n\tthis.autoScrollMargin = 40; //auto scroll on edge when within margin\n\tthis.autoScrollStep = 5; //auto scroll distance in pixels\n\tthis.autoScrollTimeout = false; //auto scroll timeout\n\tthis.touchMove = false;\n\n\tthis.moveHover = this.moveHover.bind(this);\n\tthis.endMove = this.endMove.bind(this);\n};\n\nMoveColumns.prototype.createPlaceholderElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-col\");\n\tel.classList.add(\"tabulator-col-placeholder\");\n\n\treturn el;\n};\n\nMoveColumns.prototype.initializeColumn = function (column) {\n\tvar self = this,\n\t config = {},\n\t colEl;\n\n\tif (!column.modules.frozen) {\n\n\t\tcolEl = column.getElement();\n\n\t\tconfig.mousemove = function (e) {\n\t\t\tif (column.parent === self.moving.parent) {\n\t\t\t\tif ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {\n\t\t\t\t\tif (self.toCol !== column || !self.toColAfter) {\n\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);\n\t\t\t\t\t\tself.moveColumn(column, true);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (self.toCol !== column || self.toColAfter) {\n\t\t\t\t\t\tcolEl.parentNode.insertBefore(self.placeholderElement, colEl);\n\t\t\t\t\t\tself.moveColumn(column, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}.bind(self);\n\n\t\tcolEl.addEventListener(\"mousedown\", function (e) {\n\t\t\tself.touchMove = false;\n\t\t\tif (e.which === 1) {\n\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\tself.startMove(e, column);\n\t\t\t\t}, self.checkPeriod);\n\t\t\t}\n\t\t});\n\n\t\tcolEl.addEventListener(\"mouseup\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tself.bindTouchEvents(column);\n\t}\n\n\tcolumn.modules.moveColumn = config;\n};\n\nMoveColumns.prototype.bindTouchEvents = function (column) {\n\tvar self = this,\n\t colEl = column.getElement(),\n\t startXMove = false,\n\t //shifting center position of the cell\n\tdir = false,\n\t currentCol,\n\t nextCol,\n\t prevCol,\n\t nextColWidth,\n\t prevColWidth,\n\t nextColWidthLast,\n\t prevColWidthLast;\n\n\tcolEl.addEventListener(\"touchstart\", function (e) {\n\t\tself.checkTimeout = setTimeout(function () {\n\t\t\tself.touchMove = true;\n\t\t\tcurrentCol = column;\n\t\t\tnextCol = column.nextColumn();\n\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\tprevCol = column.prevColumn();\n\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\tnextColWidthLast = 0;\n\t\t\tprevColWidthLast = 0;\n\t\t\tstartXMove = false;\n\n\t\t\tself.startMove(e, column);\n\t\t}, self.checkPeriod);\n\t}, { passive: true });\n\n\tcolEl.addEventListener(\"touchmove\", function (e) {\n\t\tvar halfCol, diff, moveToCol;\n\n\t\tif (self.moving) {\n\t\t\tself.moveHover(e);\n\n\t\t\tif (!startXMove) {\n\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t}\n\n\t\t\tdiff = e.touches[0].pageX - startXMove;\n\n\t\t\tif (diff > 0) {\n\t\t\t\tif (nextCol && diff - nextColWidthLast > nextColWidth) {\n\t\t\t\t\tmoveToCol = nextCol;\n\n\t\t\t\t\tif (moveToCol !== column) {\n\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);\n\t\t\t\t\t\tself.moveColumn(moveToCol, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (prevCol && -diff - prevColWidthLast > prevColWidth) {\n\t\t\t\t\tmoveToCol = prevCol;\n\n\t\t\t\t\tif (moveToCol !== column) {\n\t\t\t\t\t\tstartXMove = e.touches[0].pageX;\n\t\t\t\t\t\tmoveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());\n\t\t\t\t\t\tself.moveColumn(moveToCol, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (moveToCol) {\n\t\t\t\tcurrentCol = moveToCol;\n\t\t\t\tnextCol = moveToCol.nextColumn();\n\t\t\t\tnextColWidthLast = nextColWidth;\n\t\t\t\tnextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;\n\t\t\t\tprevCol = moveToCol.prevColumn();\n\t\t\t\tprevColWidthLast = prevColWidth;\n\t\t\t\tprevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;\n\t\t\t}\n\t\t}\n\t}, { passive: true });\n\n\tcolEl.addEventListener(\"touchend\", function (e) {\n\t\tif (self.checkTimeout) {\n\t\t\tclearTimeout(self.checkTimeout);\n\t\t}\n\t\tif (self.moving) {\n\t\t\tself.endMove(e);\n\t\t}\n\t});\n};\n\nMoveColumns.prototype.startMove = function (e, column) {\n\tvar element = column.getElement();\n\n\tthis.moving = column;\n\tthis.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;\n\n\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t//create placeholder\n\tthis.placeholderElement.style.width = column.getWidth() + \"px\";\n\tthis.placeholderElement.style.height = column.getHeight() + \"px\";\n\n\telement.parentNode.insertBefore(this.placeholderElement, element);\n\telement.parentNode.removeChild(element);\n\n\t//create hover element\n\tthis.hoverElement = element.cloneNode(true);\n\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\tthis.table.columnManager.getElement().appendChild(this.hoverElement);\n\n\tthis.hoverElement.style.left = \"0\";\n\tthis.hoverElement.style.bottom = \"0\";\n\n\tif (!this.touchMove) {\n\t\tthis._bindMouseMove();\n\n\t\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\t}\n\n\tthis.moveHover(e);\n};\n\nMoveColumns.prototype._bindMouseMove = function () {\n\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\tif (column.modules.moveColumn.mousemove) {\n\t\t\tcolumn.getElement().addEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t}\n\t});\n};\n\nMoveColumns.prototype._unbindMouseMove = function () {\n\tthis.table.columnManager.columnsByIndex.forEach(function (column) {\n\t\tif (column.modules.moveColumn.mousemove) {\n\t\t\tcolumn.getElement().removeEventListener(\"mousemove\", column.modules.moveColumn.mousemove);\n\t\t}\n\t});\n};\n\nMoveColumns.prototype.moveColumn = function (column, after) {\n\tvar movingCells = this.moving.getCells();\n\n\tthis.toCol = column;\n\tthis.toColAfter = after;\n\n\tif (after) {\n\t\tcolumn.getCells().forEach(function (cell, i) {\n\t\t\tvar cellEl = cell.getElement(true);\n\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);\n\t\t});\n\t} else {\n\t\tcolumn.getCells().forEach(function (cell, i) {\n\t\t\tvar cellEl = cell.getElement(true);\n\t\t\tcellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);\n\t\t});\n\t}\n};\n\nMoveColumns.prototype.endMove = function (e) {\n\tif (e.which === 1 || this.touchMove) {\n\t\tthis._unbindMouseMove();\n\n\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\tif (this.toCol) {\n\t\t\tthis.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);\n\t\t}\n\n\t\tthis.moving = false;\n\t\tthis.toCol = false;\n\t\tthis.toColAfter = false;\n\n\t\tif (!this.touchMove) {\n\t\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\t\t}\n\t}\n};\n\nMoveColumns.prototype.moveHover = function (e) {\n\tvar self = this,\n\t columnHolder = self.table.columnManager.getElement(),\n\t scrollLeft = columnHolder.scrollLeft,\n\t xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,\n\t scrollPos;\n\n\tself.hoverElement.style.left = xPos - self.startX + \"px\";\n\n\tif (xPos - scrollLeft < self.autoScrollMargin) {\n\t\tif (!self.autoScrollTimeout) {\n\t\t\tself.autoScrollTimeout = setTimeout(function () {\n\t\t\t\tscrollPos = Math.max(0, scrollLeft - 5);\n\t\t\t\tself.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\tself.autoScrollTimeout = false;\n\t\t\t}, 1);\n\t\t}\n\t}\n\n\tif (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {\n\t\tif (!self.autoScrollTimeout) {\n\t\t\tself.autoScrollTimeout = setTimeout(function () {\n\t\t\t\tscrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);\n\t\t\t\tself.table.rowManager.getElement().scrollLeft = scrollPos;\n\t\t\t\tself.autoScrollTimeout = false;\n\t\t\t}, 1);\n\t\t}\n\t}\n};\n\nTabulator.prototype.registerModule(\"moveColumn\", MoveColumns);\n\nvar MoveRows = function MoveRows(table) {\n\n\tthis.table = table; //hold Tabulator object\n\tthis.placeholderElement = this.createPlaceholderElement();\n\tthis.hoverElement = false; //floating row header element\n\tthis.checkTimeout = false; //click check timeout holder\n\tthis.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click\n\tthis.moving = false; //currently moving row\n\tthis.toRow = false; //destination row\n\tthis.toRowAfter = false; //position of moving row relative to the desitnation row\n\tthis.hasHandle = false; //row has handle instead of fully movable row\n\tthis.startY = 0; //starting Y position within header element\n\tthis.startX = 0; //starting X position within header element\n\n\tthis.moveHover = this.moveHover.bind(this);\n\tthis.endMove = this.endMove.bind(this);\n\tthis.tableRowDropEvent = false;\n\n\tthis.touchMove = false;\n\n\tthis.connection = false;\n\tthis.connectionSelectorsTables = false;\n\tthis.connectionSelectorsElements = false;\n\tthis.connectionElements = [];\n\tthis.connections = [];\n\n\tthis.connectedTable = false;\n\tthis.connectedRow = false;\n};\n\nMoveRows.prototype.createPlaceholderElement = function () {\n\tvar el = document.createElement(\"div\");\n\n\tel.classList.add(\"tabulator-row\");\n\tel.classList.add(\"tabulator-row-placeholder\");\n\n\treturn el;\n};\n\nMoveRows.prototype.initialize = function (handle) {\n\tthis.connectionSelectorsTables = this.table.options.movableRowsConnectedTables;\n\tthis.connectionSelectorsElements = this.table.options.movableRowsConnectedElements;\n\n\tthis.connection = this.connectionSelectorsTables || this.connectionSelectorsElements;\n};\n\nMoveRows.prototype.setHandle = function (handle) {\n\tthis.hasHandle = handle;\n};\n\nMoveRows.prototype.initializeGroupHeader = function (group) {\n\tvar self = this,\n\t config = {},\n\t rowEl;\n\n\t//inter table drag drop\n\tconfig.mouseup = function (e) {\n\t\tself.tableRowDrop(e, row);\n\t}.bind(self);\n\n\t//same table drag drop\n\tconfig.mousemove = function (e) {\n\t\tif (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {\n\t\t\tif (self.toRow !== group || !self.toRowAfter) {\n\t\t\t\tvar rowEl = group.getElement();\n\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\tself.moveRow(group, true);\n\t\t\t}\n\t\t} else {\n\t\t\tif (self.toRow !== group || self.toRowAfter) {\n\t\t\t\tvar rowEl = group.getElement();\n\t\t\t\tif (rowEl.previousSibling) {\n\t\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\t\tself.moveRow(group, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}.bind(self);\n\n\tgroup.modules.moveRow = config;\n};\n\nMoveRows.prototype.initializeRow = function (row) {\n\tvar self = this,\n\t config = {},\n\t rowEl;\n\n\t//inter table drag drop\n\tconfig.mouseup = function (e) {\n\t\tself.tableRowDrop(e, row);\n\t}.bind(self);\n\n\t//same table drag drop\n\tconfig.mousemove = function (e) {\n\t\tvar rowEl = row.getElement();\n\n\t\tif (e.pageY - Tabulator.prototype.helpers.elOffset(rowEl).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {\n\t\t\tif (self.toRow !== row || !self.toRowAfter) {\n\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);\n\t\t\t\tself.moveRow(row, true);\n\t\t\t}\n\t\t} else {\n\t\t\tif (self.toRow !== row || self.toRowAfter) {\n\t\t\t\trowEl.parentNode.insertBefore(self.placeholderElement, rowEl);\n\t\t\t\tself.moveRow(row, false);\n\t\t\t}\n\t\t}\n\t}.bind(self);\n\n\tif (!this.hasHandle) {\n\n\t\trowEl = row.getElement();\n\n\t\trowEl.addEventListener(\"mousedown\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\t\tself.startMove(e, row);\n\t\t\t\t}, self.checkPeriod);\n\t\t\t}\n\t\t});\n\n\t\trowEl.addEventListener(\"mouseup\", function (e) {\n\t\t\tif (e.which === 1) {\n\t\t\t\tif (self.checkTimeout) {\n\t\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.bindTouchEvents(row, row.getElement());\n\t}\n\n\trow.modules.moveRow = config;\n};\n\nMoveRows.prototype.initializeCell = function (cell) {\n\tvar self = this,\n\t cellEl = cell.getElement(true);\n\n\tcellEl.addEventListener(\"mousedown\", function (e) {\n\t\tif (e.which === 1) {\n\t\t\tself.checkTimeout = setTimeout(function () {\n\t\t\t\tself.startMove(e, cell.row);\n\t\t\t}, self.checkPeriod);\n\t\t}\n\t});\n\n\tcellEl.addEventListener(\"mouseup\", function (e) {\n\t\tif (e.which === 1) {\n\t\t\tif (self.checkTimeout) {\n\t\t\t\tclearTimeout(self.checkTimeout);\n\t\t\t}\n\t\t}\n\t});\n\n\tthis.bindTouchEvents(cell.row, cellEl);\n};\n\nMoveRows.prototype.bindTouchEvents = function (row, element) {\n\tvar self = this,\n\t startYMove = false,\n\t //shifting center position of the cell\n\tdir = false,\n\t currentRow,\n\t nextRow,\n\t prevRow,\n\t nextRowHeight,\n\t prevRowHeight,\n\t nextRowHeightLast,\n\t prevRowHeightLast;\n\n\telement.addEventListener(\"touchstart\", function (e) {\n\t\tself.checkTimeout = setTimeout(function () {\n\t\t\tself.touchMove = true;\n\t\t\tcurrentRow = row;\n\t\t\tnextRow = row.nextRow();\n\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\tprevRow = row.prevRow();\n\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\tnextRowHeightLast = 0;\n\t\t\tprevRowHeightLast = 0;\n\t\t\tstartYMove = false;\n\n\t\t\tself.startMove(e, row);\n\t\t}, self.checkPeriod);\n\t}, { passive: true });\n\tthis.moving, this.toRow, this.toRowAfter;\n\telement.addEventListener(\"touchmove\", function (e) {\n\n\t\tvar halfCol, diff, moveToRow;\n\n\t\tif (self.moving) {\n\t\t\te.preventDefault();\n\n\t\t\tself.moveHover(e);\n\n\t\t\tif (!startYMove) {\n\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t}\n\n\t\t\tdiff = e.touches[0].pageY - startYMove;\n\n\t\t\tif (diff > 0) {\n\t\t\t\tif (nextRow && diff - nextRowHeightLast > nextRowHeight) {\n\t\t\t\t\tmoveToRow = nextRow;\n\n\t\t\t\t\tif (moveToRow !== row) {\n\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);\n\t\t\t\t\t\tself.moveRow(moveToRow, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (prevRow && -diff - prevRowHeightLast > prevRowHeight) {\n\t\t\t\t\tmoveToRow = prevRow;\n\n\t\t\t\t\tif (moveToRow !== row) {\n\t\t\t\t\t\tstartYMove = e.touches[0].pageY;\n\t\t\t\t\t\tmoveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());\n\t\t\t\t\t\tself.moveRow(moveToRow, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (moveToRow) {\n\t\t\t\tcurrentRow = moveToRow;\n\t\t\t\tnextRow = moveToRow.nextRow();\n\t\t\t\tnextRowHeightLast = nextRowHeight;\n\t\t\t\tnextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;\n\t\t\t\tprevRow = moveToRow.prevRow();\n\t\t\t\tprevRowHeightLast = prevRowHeight;\n\t\t\t\tprevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;\n\t\t\t}\n\t\t}\n\t});\n\n\telement.addEventListener(\"touchend\", function (e) {\n\t\tif (self.checkTimeout) {\n\t\t\tclearTimeout(self.checkTimeout);\n\t\t}\n\t\tif (self.moving) {\n\t\t\tself.endMove(e);\n\t\t\tself.touchMove = false;\n\t\t}\n\t});\n};\n\nMoveRows.prototype._bindMouseMove = function () {\n\tvar self = this;\n\n\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\tif ((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow.mousemove) {\n\t\t\trow.getElement().addEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t}\n\t});\n};\n\nMoveRows.prototype._unbindMouseMove = function () {\n\tvar self = this;\n\n\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\tif ((row.type === \"row\" || row.type === \"group\") && row.modules.moveRow.mousemove) {\n\t\t\trow.getElement().removeEventListener(\"mousemove\", row.modules.moveRow.mousemove);\n\t\t}\n\t});\n};\n\nMoveRows.prototype.startMove = function (e, row) {\n\tvar element = row.getElement();\n\n\tthis.setStartPosition(e, row);\n\n\tthis.moving = row;\n\n\tthis.table.element.classList.add(\"tabulator-block-select\");\n\n\t//create placeholder\n\tthis.placeholderElement.style.width = row.getWidth() + \"px\";\n\tthis.placeholderElement.style.height = row.getHeight() + \"px\";\n\n\tif (!this.connection) {\n\t\telement.parentNode.insertBefore(this.placeholderElement, element);\n\t\telement.parentNode.removeChild(element);\n\t} else {\n\t\tthis.table.element.classList.add(\"tabulator-movingrow-sending\");\n\t\tthis.connectToTables(row);\n\t}\n\n\t//create hover element\n\tthis.hoverElement = element.cloneNode(true);\n\tthis.hoverElement.classList.add(\"tabulator-moving\");\n\n\tif (this.connection) {\n\t\tdocument.body.appendChild(this.hoverElement);\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.top = \"0\";\n\t\tthis.hoverElement.style.width = this.table.element.clientWidth + \"px\";\n\t\tthis.hoverElement.style.whiteSpace = \"nowrap\";\n\t\tthis.hoverElement.style.overflow = \"hidden\";\n\t\tthis.hoverElement.style.pointerEvents = \"none\";\n\t} else {\n\t\tthis.table.rowManager.getTableElement().appendChild(this.hoverElement);\n\n\t\tthis.hoverElement.style.left = \"0\";\n\t\tthis.hoverElement.style.top = \"0\";\n\n\t\tthis._bindMouseMove();\n\t}\n\n\tdocument.body.addEventListener(\"mousemove\", this.moveHover);\n\tdocument.body.addEventListener(\"mouseup\", this.endMove);\n\n\tthis.moveHover(e);\n};\n\nMoveRows.prototype.setStartPosition = function (e, row) {\n\tvar pageX = this.touchMove ? e.touches[0].pageX : e.pageX,\n\t pageY = this.touchMove ? e.touches[0].pageY : e.pageY,\n\t element,\n\t position;\n\n\telement = row.getElement();\n\tif (this.connection) {\n\t\tposition = element.getBoundingClientRect();\n\n\t\tthis.startX = position.left - pageX + window.pageXOffset;\n\t\tthis.startY = position.top - pageY + window.pageYOffset;\n\t} else {\n\t\tthis.startY = pageY - element.getBoundingClientRect().top;\n\t}\n};\n\nMoveRows.prototype.endMove = function (e) {\n\tif (!e || e.which === 1 || this.touchMove) {\n\t\tthis._unbindMouseMove();\n\n\t\tif (!this.connection) {\n\t\t\tthis.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);\n\t\t\tthis.placeholderElement.parentNode.removeChild(this.placeholderElement);\n\t\t}\n\n\t\tthis.hoverElement.parentNode.removeChild(this.hoverElement);\n\n\t\tthis.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\tif (this.toRow) {\n\t\t\tthis.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);\n\t\t}\n\n\t\tthis.moving = false;\n\t\tthis.toRow = false;\n\t\tthis.toRowAfter = false;\n\n\t\tdocument.body.removeEventListener(\"mousemove\", this.moveHover);\n\t\tdocument.body.removeEventListener(\"mouseup\", this.endMove);\n\n\t\tif (this.connection) {\n\t\t\tthis.table.element.classList.remove(\"tabulator-movingrow-sending\");\n\t\t\tthis.disconnectFromTables();\n\t\t}\n\t}\n};\n\nMoveRows.prototype.moveRow = function (row, after) {\n\tthis.toRow = row;\n\tthis.toRowAfter = after;\n};\n\nMoveRows.prototype.moveHover = function (e) {\n\tif (this.connection) {\n\t\tthis.moveHoverConnections.call(this, e);\n\t} else {\n\t\tthis.moveHoverTable.call(this, e);\n\t}\n};\n\nMoveRows.prototype.moveHoverTable = function (e) {\n\tvar rowHolder = this.table.rowManager.getElement(),\n\t scrollTop = rowHolder.scrollTop,\n\t yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,\n\t scrollPos;\n\n\tthis.hoverElement.style.top = yPos - this.startY + \"px\";\n};\n\nMoveRows.prototype.moveHoverConnections = function (e) {\n\tthis.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + \"px\";\n\tthis.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + \"px\";\n};\n\nMoveRows.prototype.elementRowDrop = function (e, element, row) {\n\tif (this.table.options.movableRowsElementDrop) {\n\t\tthis.table.options.movableRowsElementDrop(e, element, row ? row.getComponent() : false);\n\t}\n};\n\n//establish connection with other tables\nMoveRows.prototype.connectToTables = function (row) {\n\tvar _this75 = this;\n\n\tvar connectionTables;\n\n\tif (this.connectionSelectorsTables) {\n\t\tconnectionTables = this.table.modules.comms.getConnections(this.connectionSelectorsTables);\n\n\t\tthis.table.options.movableRowsSendingStart.call(this.table, connectionTables);\n\n\t\tthis.table.modules.comms.send(this.connectionSelectorsTables, \"moveRow\", \"connect\", {\n\t\t\trow: row\n\t\t});\n\t}\n\n\tif (this.connectionSelectorsElements) {\n\n\t\tthis.connectionElements = [];\n\n\t\tif (!Array.isArray(this.connectionSelectorsElements)) {\n\t\t\tthis.connectionSelectorsElements = [this.connectionSelectorsElements];\n\t\t}\n\n\t\tthis.connectionSelectorsElements.forEach(function (query) {\n\t\t\tif (typeof query === \"string\") {\n\t\t\t\t_this75.connectionElements = _this75.connectionElements.concat(Array.prototype.slice.call(document.querySelectorAll(query)));\n\t\t\t} else {\n\t\t\t\t_this75.connectionElements.push(query);\n\t\t\t}\n\t\t});\n\n\t\tthis.connectionElements.forEach(function (element) {\n\t\t\tvar dropEvent = function dropEvent(e) {\n\t\t\t\t_this75.elementRowDrop(e, element, _this75.moving);\n\t\t\t};\n\n\t\t\telement.addEventListener(\"mouseup\", dropEvent);\n\t\t\telement.tabulatorElementDropEvent = dropEvent;\n\n\t\t\telement.classList.add(\"tabulator-movingrow-receiving\");\n\t\t});\n\t}\n};\n\n//disconnect from other tables\nMoveRows.prototype.disconnectFromTables = function () {\n\tvar connectionTables;\n\n\tif (this.connectionSelectorsTables) {\n\t\tconnectionTables = this.table.modules.comms.getConnections(this.connectionSelectorsTables);\n\n\t\tthis.table.options.movableRowsSendingStop.call(this.table, connectionTables);\n\n\t\tthis.table.modules.comms.send(this.connectionSelectorsTables, \"moveRow\", \"disconnect\");\n\t}\n\n\tthis.connectionElements.forEach(function (element) {\n\t\telement.classList.remove(\"tabulator-movingrow-receiving\");\n\t\telement.removeEventListener(\"mouseup\", element.tabulatorElementDropEvent);\n\t\tdelete element.tabulatorElementDropEvent;\n\t});\n};\n\n//accept incomming connection\nMoveRows.prototype.connect = function (table, row) {\n\tvar self = this;\n\tif (!this.connectedTable) {\n\t\tthis.connectedTable = table;\n\t\tthis.connectedRow = row;\n\n\t\tthis.table.element.classList.add(\"tabulator-movingrow-receiving\");\n\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif (row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup) {\n\t\t\t\trow.getElement().addEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t}\n\t\t});\n\n\t\tself.tableRowDropEvent = self.tableRowDrop.bind(self);\n\n\t\tself.table.element.addEventListener(\"mouseup\", self.tableRowDropEvent);\n\n\t\tthis.table.options.movableRowsReceivingStart.call(this.table, row, table);\n\n\t\treturn true;\n\t} else {\n\t\tconsole.warn(\"Move Row Error - Table cannot accept connection, already connected to table:\", this.connectedTable);\n\t\treturn false;\n\t}\n};\n\n//close incomming connection\nMoveRows.prototype.disconnect = function (table) {\n\tvar self = this;\n\tif (table === this.connectedTable) {\n\t\tthis.connectedTable = false;\n\t\tthis.connectedRow = false;\n\n\t\tthis.table.element.classList.remove(\"tabulator-movingrow-receiving\");\n\n\t\tself.table.rowManager.getDisplayRows().forEach(function (row) {\n\t\t\tif (row.type === \"row\" && row.modules.moveRow && row.modules.moveRow.mouseup) {\n\t\t\t\trow.getElement().removeEventListener(\"mouseup\", row.modules.moveRow.mouseup);\n\t\t\t}\n\t\t});\n\n\t\tself.table.element.removeEventListener(\"mouseup\", self.tableRowDropEvent);\n\n\t\tthis.table.options.movableRowsReceivingStop.call(this.table, table);\n\t} else {\n\t\tconsole.warn(\"Move Row Error - trying to disconnect from non connected table\");\n\t}\n};\n\nMoveRows.prototype.dropComplete = function (table, row, success) {\n\tvar sender = false;\n\n\tif (success) {\n\n\t\tswitch (_typeof(this.table.options.movableRowsSender)) {\n\t\t\tcase \"string\":\n\t\t\t\tsender = this.senders[this.table.options.movableRowsSender];\n\t\t\t\tbreak;\n\n\t\t\tcase \"function\":\n\t\t\t\tsender = this.table.options.movableRowsSender;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (sender) {\n\t\t\tsender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t\t} else {\n\t\t\tif (this.table.options.movableRowsSender) {\n\t\t\t\tconsole.warn(\"Mover Row Error - no matching sender found:\", this.table.options.movableRowsSender);\n\t\t\t}\n\t\t}\n\n\t\tthis.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t} else {\n\t\tthis.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);\n\t}\n\n\tthis.endMove();\n};\n\nMoveRows.prototype.tableRowDrop = function (e, row) {\n\tvar receiver = false,\n\t success = false;\n\n\te.stopImmediatePropagation();\n\n\tswitch (_typeof(this.table.options.movableRowsReceiver)) {\n\t\tcase \"string\":\n\t\t\treceiver = this.receivers[this.table.options.movableRowsReceiver];\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\treceiver = this.table.options.movableRowsReceiver;\n\t\t\tbreak;\n\t}\n\n\tif (receiver) {\n\t\tsuccess = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t} else {\n\t\tconsole.warn(\"Mover Row Error - no matching receiver found:\", this.table.options.movableRowsReceiver);\n\t}\n\n\tif (success) {\n\t\tthis.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t} else {\n\t\tthis.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);\n\t}\n\n\tthis.table.modules.comms.send(this.connectedTable, \"moveRow\", \"dropcomplete\", {\n\t\trow: row,\n\t\tsuccess: success\n\t});\n};\n\nMoveRows.prototype.receivers = {\n\tinsert: function insert(fromRow, toRow, fromTable) {\n\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\treturn true;\n\t},\n\n\tadd: function add(fromRow, toRow, fromTable) {\n\t\tthis.table.addRow(fromRow.getData());\n\t\treturn true;\n\t},\n\n\tupdate: function update(fromRow, toRow, fromTable) {\n\t\tif (toRow) {\n\t\t\ttoRow.update(fromRow.getData());\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\treplace: function replace(fromRow, toRow, fromTable) {\n\t\tif (toRow) {\n\t\t\tthis.table.addRow(fromRow.getData(), undefined, toRow);\n\t\t\ttoRow.delete();\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n};\n\nMoveRows.prototype.senders = {\n\tdelete: function _delete(fromRow, toRow, toTable) {\n\t\tfromRow.delete();\n\t}\n};\n\nMoveRows.prototype.commsReceived = function (table, action, data) {\n\tswitch (action) {\n\t\tcase \"connect\":\n\t\t\treturn this.connect(table, data.row);\n\t\t\tbreak;\n\n\t\tcase \"disconnect\":\n\t\t\treturn this.disconnect(table);\n\t\t\tbreak;\n\n\t\tcase \"dropcomplete\":\n\t\t\treturn this.dropComplete(table, data.row, data.success);\n\t\t\tbreak;\n\t}\n};\n\nTabulator.prototype.registerModule(\"moveRow\", MoveRows);\nvar Mutator = function Mutator(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.allowedTypes = [\"\", \"data\", \"edit\", \"clipboard\"]; //list of muatation types\n\tthis.enabled = true;\n};\n\n//initialize column mutator\nMutator.prototype.initializeColumn = function (column) {\n\tvar self = this,\n\t match = false,\n\t config = {};\n\n\tthis.allowedTypes.forEach(function (type) {\n\t\tvar key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t\t mutator;\n\n\t\tif (column.definition[key]) {\n\t\t\tmutator = self.lookupMutator(column.definition[key]);\n\n\t\t\tif (mutator) {\n\t\t\t\tmatch = true;\n\n\t\t\t\tconfig[key] = {\n\t\t\t\t\tmutator: mutator,\n\t\t\t\t\tparams: column.definition[key + \"Params\"] || {}\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t});\n\n\tif (match) {\n\t\tcolumn.modules.mutate = config;\n\t}\n};\n\nMutator.prototype.lookupMutator = function (value) {\n\tvar mutator = false;\n\n\t//set column mutator\n\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\tcase \"string\":\n\t\t\tif (this.mutators[value]) {\n\t\t\t\tmutator = this.mutators[value];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Mutator Error - No such mutator found, ignoring: \", value);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\tmutator = value;\n\t\t\tbreak;\n\t}\n\n\treturn mutator;\n};\n\n//apply mutator to row\nMutator.prototype.transformRow = function (data, type, updatedData) {\n\tvar self = this,\n\t key = \"mutator\" + (type.charAt(0).toUpperCase() + type.slice(1)),\n\t value;\n\n\tif (this.enabled) {\n\n\t\tself.table.columnManager.traverse(function (column) {\n\t\t\tvar mutator, params, component;\n\n\t\t\tif (column.modules.mutate) {\n\t\t\t\tmutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;\n\n\t\t\t\tif (mutator) {\n\t\t\t\t\tvalue = column.getFieldValue(typeof updatedData !== \"undefined\" ? updatedData : data);\n\n\t\t\t\t\tif (type == \"data\" || typeof value !== \"undefined\") {\n\t\t\t\t\t\tcomponent = column.getComponent();\n\t\t\t\t\t\tparams = typeof mutator.params === \"function\" ? mutator.params(value, data, type, component) : mutator.params;\n\t\t\t\t\t\tcolumn.setFieldValue(data, mutator.mutator(value, data, type, params, component));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\treturn data;\n};\n\n//apply mutator to new cell value\nMutator.prototype.transformCell = function (cell, value) {\n\tvar mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false,\n\t tempData = {};\n\n\tif (mutator) {\n\t\ttempData = Object.assign(tempData, cell.row.getData());\n\t\tcell.column.setFieldValue(tempData, value);\n\t\treturn mutator.mutator(value, tempData, \"edit\", mutator.params, cell.getComponent());\n\t} else {\n\t\treturn value;\n\t}\n};\n\nMutator.prototype.enable = function () {\n\tthis.enabled = true;\n};\n\nMutator.prototype.disable = function () {\n\tthis.enabled = false;\n};\n\n//default mutators\nMutator.prototype.mutators = {};\n\nTabulator.prototype.registerModule(\"mutator\", Mutator);\nvar Page = function Page(table) {\n\n\tthis.table = table; //hold Tabulator object\n\n\tthis.mode = \"local\";\n\tthis.progressiveLoad = false;\n\n\tthis.size = 0;\n\tthis.page = 1;\n\tthis.count = 5;\n\tthis.max = 1;\n\n\tthis.displayIndex = 0; //index in display pipeline\n\n\tthis.initialLoad = true;\n\n\tthis.pageSizes = [];\n\n\tthis.dataReceivedNames = {};\n\tthis.dataSentNames = {};\n\n\tthis.createElements();\n};\n\nPage.prototype.createElements = function () {\n\n\tvar button;\n\n\tthis.element = document.createElement(\"span\");\n\tthis.element.classList.add(\"tabulator-paginator\");\n\n\tthis.pagesElement = document.createElement(\"span\");\n\tthis.pagesElement.classList.add(\"tabulator-pages\");\n\n\tbutton = document.createElement(\"button\");\n\tbutton.classList.add(\"tabulator-page\");\n\tbutton.setAttribute(\"type\", \"button\");\n\tbutton.setAttribute(\"role\", \"button\");\n\tbutton.setAttribute(\"aria-label\", \"\");\n\tbutton.setAttribute(\"title\", \"\");\n\n\tthis.firstBut = button.cloneNode(true);\n\tthis.firstBut.setAttribute(\"data-page\", \"first\");\n\n\tthis.prevBut = button.cloneNode(true);\n\tthis.prevBut.setAttribute(\"data-page\", \"prev\");\n\n\tthis.nextBut = button.cloneNode(true);\n\tthis.nextBut.setAttribute(\"data-page\", \"next\");\n\n\tthis.lastBut = button.cloneNode(true);\n\tthis.lastBut.setAttribute(\"data-page\", \"last\");\n\n\tif (this.table.options.paginationSizeSelector) {\n\t\tthis.pageSizeSelect = document.createElement(\"select\");\n\t\tthis.pageSizeSelect.classList.add(\"tabulator-page-size\");\n\t}\n};\n\nPage.prototype.generatePageSizeSelectList = function () {\n\tvar _this76 = this;\n\n\tvar pageSizes = [];\n\n\tif (this.pageSizeSelect) {\n\n\t\tif (Array.isArray(this.table.options.paginationSizeSelector)) {\n\t\t\tpageSizes = this.table.options.paginationSizeSelector;\n\t\t\tthis.pageSizes = pageSizes;\n\n\t\t\tif (this.pageSizes.indexOf(this.size) == -1) {\n\t\t\t\tpageSizes.unshift(this.size);\n\t\t\t}\n\t\t} else {\n\n\t\t\tif (this.pageSizes.indexOf(this.size) == -1) {\n\t\t\t\tpageSizes = [];\n\n\t\t\t\tfor (var _i14 = 1; _i14 < 5; _i14++) {\n\t\t\t\t\tpageSizes.push(this.size * _i14);\n\t\t\t\t}\n\n\t\t\t\tthis.pageSizes = pageSizes;\n\t\t\t} else {\n\t\t\t\tpageSizes = this.pageSizes;\n\t\t\t}\n\t\t}\n\n\t\twhile (this.pageSizeSelect.firstChild) {\n\t\t\tthis.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);\n\t\t}pageSizes.forEach(function (item) {\n\t\t\tvar itemEl = document.createElement(\"option\");\n\t\t\titemEl.value = item;\n\n\t\t\tif (item === true) {\n\t\t\t\t_this76.table.modules.localize.bind(\"pagination|all\", function (value) {\n\t\t\t\t\titemEl.innerHTML = value;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\titemEl.innerHTML = item;\n\t\t\t}\n\n\t\t\t_this76.pageSizeSelect.appendChild(itemEl);\n\t\t});\n\n\t\tthis.pageSizeSelect.value = this.size;\n\t}\n};\n\n//setup pageination\nPage.prototype.initialize = function (hidden) {\n\tvar self = this,\n\t pageSelectLabel,\n\t testElRow,\n\t testElCell;\n\n\t//update param names\n\tthis.dataSentNames = Object.assign({}, this.paginationDataSentNames);\n\tthis.dataSentNames = Object.assign(this.dataSentNames, this.table.options.paginationDataSent);\n\n\tthis.dataReceivedNames = Object.assign({}, this.paginationDataReceivedNames);\n\tthis.dataReceivedNames = Object.assign(this.dataReceivedNames, this.table.options.paginationDataReceived);\n\n\t//build pagination element\n\n\t//bind localizations\n\tself.table.modules.localize.bind(\"pagination|first\", function (value) {\n\t\tself.firstBut.innerHTML = value;\n\t});\n\n\tself.table.modules.localize.bind(\"pagination|first_title\", function (value) {\n\t\tself.firstBut.setAttribute(\"aria-label\", value);\n\t\tself.firstBut.setAttribute(\"title\", value);\n\t});\n\n\tself.table.modules.localize.bind(\"pagination|prev\", function (value) {\n\t\tself.prevBut.innerHTML = value;\n\t});\n\n\tself.table.modules.localize.bind(\"pagination|prev_title\", function (value) {\n\t\tself.prevBut.setAttribute(\"aria-label\", value);\n\t\tself.prevBut.setAttribute(\"title\", value);\n\t});\n\n\tself.table.modules.localize.bind(\"pagination|next\", function (value) {\n\t\tself.nextBut.innerHTML = value;\n\t});\n\n\tself.table.modules.localize.bind(\"pagination|next_title\", function (value) {\n\t\tself.nextBut.setAttribute(\"aria-label\", value);\n\t\tself.nextBut.setAttribute(\"title\", value);\n\t});\n\n\tself.table.modules.localize.bind(\"pagination|last\", function (value) {\n\t\tself.lastBut.innerHTML = value;\n\t});\n\n\tself.table.modules.localize.bind(\"pagination|last_title\", function (value) {\n\t\tself.lastBut.setAttribute(\"aria-label\", value);\n\t\tself.lastBut.setAttribute(\"title\", value);\n\t});\n\n\t//click bindings\n\tself.firstBut.addEventListener(\"click\", function () {\n\t\tself.setPage(1).then(function () {}).catch(function () {});\n\t});\n\n\tself.prevBut.addEventListener(\"click\", function () {\n\t\tself.previousPage().then(function () {}).catch(function () {});\n\t});\n\n\tself.nextBut.addEventListener(\"click\", function () {\n\t\tself.nextPage().then(function () {}).catch(function () {});\n\t});\n\n\tself.lastBut.addEventListener(\"click\", function () {\n\t\tself.setPage(self.max).then(function () {}).catch(function () {});\n\t});\n\n\tif (self.table.options.paginationElement) {\n\t\tself.element = self.table.options.paginationElement;\n\t}\n\n\tif (this.pageSizeSelect) {\n\t\tpageSelectLabel = document.createElement(\"label\");\n\n\t\tself.table.modules.localize.bind(\"pagination|page_size\", function (value) {\n\t\t\tself.pageSizeSelect.setAttribute(\"aria-label\", value);\n\t\t\tself.pageSizeSelect.setAttribute(\"title\", value);\n\t\t\tpageSelectLabel.innerHTML = value;\n\t\t});\n\n\t\tself.element.appendChild(pageSelectLabel);\n\t\tself.element.appendChild(self.pageSizeSelect);\n\n\t\tself.pageSizeSelect.addEventListener(\"change\", function (e) {\n\t\t\tself.setPageSize(self.pageSizeSelect.value == \"true\" ? true : self.pageSizeSelect.value);\n\t\t\tself.setPage(1).then(function () {}).catch(function () {});\n\t\t});\n\t}\n\n\t//append to DOM\n\tself.element.appendChild(self.firstBut);\n\tself.element.appendChild(self.prevBut);\n\tself.element.appendChild(self.pagesElement);\n\tself.element.appendChild(self.nextBut);\n\tself.element.appendChild(self.lastBut);\n\n\tif (!self.table.options.paginationElement && !hidden) {\n\t\tself.table.footerManager.append(self.element, self);\n\t}\n\n\t//set default values\n\tself.mode = self.table.options.pagination;\n\n\tif (self.table.options.paginationSize) {\n\t\tself.size = self.table.options.paginationSize;\n\t} else {\n\t\ttestElRow = document.createElement(\"div\");\n\t\ttestElRow.classList.add(\"tabulator-row\");\n\t\ttestElRow.style.visibility = hidden;\n\n\t\ttestElCell = document.createElement(\"div\");\n\t\ttestElCell.classList.add(\"tabulator-cell\");\n\t\ttestElCell.innerHTML = \"Page Row Test\";\n\n\t\ttestElRow.appendChild(testElCell);\n\n\t\tself.table.rowManager.getTableElement().appendChild(testElRow);\n\n\t\tself.size = Math.floor(self.table.rowManager.getElement().clientHeight / testElRow.offsetHeight);\n\n\t\tself.table.rowManager.getTableElement().removeChild(testElRow);\n\t}\n\n\t// self.page = self.table.options.paginationInitialPage || 1;\n\tself.count = self.table.options.paginationButtonCount;\n\n\tself.generatePageSizeSelectList();\n};\n\nPage.prototype.initializeProgressive = function (mode) {\n\tthis.initialize(true);\n\tthis.mode = \"progressive_\" + mode;\n\tthis.progressiveLoad = true;\n};\n\nPage.prototype.setDisplayIndex = function (index) {\n\tthis.displayIndex = index;\n};\n\nPage.prototype.getDisplayIndex = function () {\n\treturn this.displayIndex;\n};\n\n//calculate maximum page from number of rows\nPage.prototype.setMaxRows = function (rowCount) {\n\tif (!rowCount) {\n\t\tthis.max = 1;\n\t} else {\n\t\tthis.max = this.size === true ? 1 : Math.ceil(rowCount / this.size);\n\t}\n\n\tif (this.page > this.max) {\n\t\tthis.page = this.max;\n\t}\n};\n\n//reset to first page without triggering action\nPage.prototype.reset = function (force, columnsChanged) {\n\tif (this.mode == \"local\" || force) {\n\t\tthis.page = 1;\n\t}\n\n\tif (columnsChanged) {\n\t\tthis.initialLoad = true;\n\t}\n\n\treturn true;\n};\n\n//set the maxmum page\nPage.prototype.setMaxPage = function (max) {\n\n\tmax = parseInt(max);\n\n\tthis.max = max || 1;\n\n\tif (this.page > this.max) {\n\t\tthis.page = this.max;\n\t\tthis.trigger();\n\t}\n};\n\n//set current page number\nPage.prototype.setPage = function (page) {\n\tvar _this77 = this;\n\n\tvar self = this;\n\n\tswitch (page) {\n\t\tcase \"first\":\n\t\t\treturn this.setPage(1);\n\t\t\tbreak;\n\n\t\tcase \"prev\":\n\t\t\treturn this.previousPage();\n\t\t\tbreak;\n\n\t\tcase \"next\":\n\t\t\treturn this.nextPage();\n\t\t\tbreak;\n\n\t\tcase \"last\":\n\t\t\treturn this.setPage(this.max);\n\t\t\tbreak;\n\t}\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tpage = parseInt(page);\n\n\t\tif (page > 0 && page <= _this77.max || _this77.mode !== \"local\") {\n\t\t\t_this77.page = page;\n\t\t\t_this77.trigger().then(function () {\n\t\t\t\tresolve();\n\t\t\t}).catch(function () {\n\t\t\t\treject();\n\t\t\t});\n\n\t\t\tif (self.table.options.persistence && self.table.modExists(\"persistence\", true) && self.table.modules.persistence.config.page) {\n\t\t\t\tself.table.modules.persistence.save(\"page\");\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Pagination Error - Requested page is out of range of 1 - \" + _this77.max + \":\", page);\n\t\t\treject();\n\t\t}\n\t});\n};\n\nPage.prototype.setPageToRow = function (row) {\n\tvar _this78 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tvar rows = _this78.table.rowManager.getDisplayRows(_this78.displayIndex - 1);\n\t\tvar index = rows.indexOf(row);\n\n\t\tif (index > -1) {\n\t\t\tvar page = _this78.size === true ? 1 : Math.ceil((index + 1) / _this78.size);\n\n\t\t\t_this78.setPage(page).then(function () {\n\t\t\t\tresolve();\n\t\t\t}).catch(function () {\n\t\t\t\treject();\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.warn(\"Pagination Error - Requested row is not visible\");\n\t\t\treject();\n\t\t}\n\t});\n};\n\nPage.prototype.setPageSize = function (size) {\n\tif (size !== true) {\n\t\tsize = parseInt(size);\n\t}\n\n\tif (size > 0) {\n\t\tthis.size = size;\n\t}\n\n\tif (this.pageSizeSelect) {\n\t\t// this.pageSizeSelect.value = size;\n\t\tthis.generatePageSizeSelectList();\n\t}\n\n\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.page) {\n\t\tthis.table.modules.persistence.save(\"page\");\n\t}\n};\n\n//setup the pagination buttons\nPage.prototype._setPageButtons = function () {\n\tvar self = this;\n\n\tvar leftSize = Math.floor((this.count - 1) / 2);\n\tvar rightSize = Math.ceil((this.count - 1) / 2);\n\tvar min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);\n\tvar max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);\n\n\twhile (self.pagesElement.firstChild) {\n\t\tself.pagesElement.removeChild(self.pagesElement.firstChild);\n\t}if (self.page == 1) {\n\t\tself.firstBut.disabled = true;\n\t\tself.prevBut.disabled = true;\n\t} else {\n\t\tself.firstBut.disabled = false;\n\t\tself.prevBut.disabled = false;\n\t}\n\n\tif (self.page == self.max) {\n\t\tself.lastBut.disabled = true;\n\t\tself.nextBut.disabled = true;\n\t} else {\n\t\tself.lastBut.disabled = false;\n\t\tself.nextBut.disabled = false;\n\t}\n\n\tfor (var _i15 = min; _i15 <= max; _i15++) {\n\t\tif (_i15 > 0 && _i15 <= self.max) {\n\t\t\tself.pagesElement.appendChild(self._generatePageButton(_i15));\n\t\t}\n\t}\n\n\tthis.footerRedraw();\n};\n\nPage.prototype._generatePageButton = function (page) {\n\tvar self = this,\n\t button = document.createElement(\"button\");\n\n\tbutton.classList.add(\"tabulator-page\");\n\tif (page == self.page) {\n\t\tbutton.classList.add(\"active\");\n\t}\n\n\tbutton.setAttribute(\"type\", \"button\");\n\tbutton.setAttribute(\"role\", \"button\");\n\n\tself.table.modules.localize.bind(\"pagination|page_title\", function (value) {\n\t\tbutton.setAttribute(\"aria-label\", value + \" \" + page);\n\t\tbutton.setAttribute(\"title\", value + \" \" + page);\n\t});\n\n\tbutton.setAttribute(\"data-page\", page);\n\tbutton.textContent = page;\n\n\tbutton.addEventListener(\"click\", function (e) {\n\t\tself.setPage(page).then(function () {}).catch(function () {});\n\t});\n\n\treturn button;\n};\n\n//previous page\nPage.prototype.previousPage = function () {\n\tvar _this79 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (_this79.page > 1) {\n\t\t\t_this79.page--;\n\t\t\t_this79.trigger().then(function () {\n\t\t\t\tresolve();\n\t\t\t}).catch(function () {\n\t\t\t\treject();\n\t\t\t});\n\n\t\t\tif (_this79.table.options.persistence && _this79.table.modExists(\"persistence\", true) && _this79.table.modules.persistence.config.page) {\n\t\t\t\t_this79.table.modules.persistence.save(\"page\");\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn(\"Pagination Error - Previous page would be less than page 1:\", 0);\n\t\t\treject();\n\t\t}\n\t});\n};\n\n//next page\nPage.prototype.nextPage = function () {\n\tvar _this80 = this;\n\n\treturn new Promise(function (resolve, reject) {\n\t\tif (_this80.page < _this80.max) {\n\t\t\t_this80.page++;\n\t\t\t_this80.trigger().then(function () {\n\t\t\t\tresolve();\n\t\t\t}).catch(function () {\n\t\t\t\treject();\n\t\t\t});\n\n\t\t\tif (_this80.table.options.persistence && _this80.table.modExists(\"persistence\", true) && _this80.table.modules.persistence.config.page) {\n\t\t\t\t_this80.table.modules.persistence.save(\"page\");\n\t\t\t}\n\t\t} else {\n\t\t\tif (!_this80.progressiveLoad) {\n\t\t\t\tconsole.warn(\"Pagination Error - Next page would be greater than maximum page of \" + _this80.max + \":\", _this80.max + 1);\n\t\t\t}\n\t\t\treject();\n\t\t}\n\t});\n};\n\n//return current page number\nPage.prototype.getPage = function () {\n\treturn this.page;\n};\n\n//return max page number\nPage.prototype.getPageMax = function () {\n\treturn this.max;\n};\n\nPage.prototype.getPageSize = function (size) {\n\treturn this.size;\n};\n\nPage.prototype.getMode = function () {\n\treturn this.mode;\n};\n\n//return appropriate rows for current page\nPage.prototype.getRows = function (data) {\n\tvar output, start, end;\n\n\tif (this.mode == \"local\") {\n\t\toutput = [];\n\n\t\tif (this.size === true) {\n\t\t\tstart = 0;\n\t\t\tend = data.length;\n\t\t} else {\n\t\t\tstart = this.size * (this.page - 1);\n\t\t\tend = start + parseInt(this.size);\n\t\t}\n\n\t\tthis._setPageButtons();\n\n\t\tfor (var _i16 = start; _i16 < end; _i16++) {\n\t\t\tif (data[_i16]) {\n\t\t\t\toutput.push(data[_i16]);\n\t\t\t}\n\t\t}\n\n\t\treturn output;\n\t} else {\n\n\t\tthis._setPageButtons();\n\n\t\treturn data.slice(0);\n\t}\n};\n\nPage.prototype.trigger = function () {\n\tvar _this81 = this;\n\n\tvar left;\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tswitch (_this81.mode) {\n\t\t\tcase \"local\":\n\t\t\t\tleft = _this81.table.rowManager.scrollLeft;\n\n\t\t\t\t_this81.table.rowManager.refreshActiveData(\"page\");\n\t\t\t\t_this81.table.rowManager.scrollHorizontal(left);\n\n\t\t\t\t_this81.table.options.pageLoaded.call(_this81.table, _this81.getPage());\n\t\t\t\tresolve();\n\t\t\t\tbreak;\n\n\t\t\tcase \"remote\":\n\t\t\tcase \"progressive_load\":\n\t\t\tcase \"progressive_scroll\":\n\t\t\t\t_this81.table.modules.ajax.blockActiveRequest();\n\t\t\t\t_this81._getRemotePage().then(function () {\n\t\t\t\t\tresolve();\n\t\t\t\t}).catch(function () {\n\t\t\t\t\treject();\n\t\t\t\t});\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn(\"Pagination Error - no such pagination mode:\", _this81.mode);\n\t\t\t\treject();\n\t\t}\n\t});\n};\n\nPage.prototype._getRemotePage = function () {\n\tvar _this82 = this;\n\n\tvar self = this,\n\t oldParams,\n\t pageParams;\n\n\treturn new Promise(function (resolve, reject) {\n\n\t\tif (!self.table.modExists(\"ajax\", true)) {\n\t\t\treject();\n\t\t}\n\n\t\t//record old params and restore after request has been made\n\t\toldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});\n\t\tpageParams = self.table.modules.ajax.getParams();\n\n\t\t//configure request params\n\t\tpageParams[_this82.dataSentNames.page] = self.page;\n\n\t\t//set page size if defined\n\t\tif (_this82.size) {\n\t\t\tpageParams[_this82.dataSentNames.size] = _this82.size;\n\t\t}\n\n\t\t//set sort data if defined\n\t\tif (_this82.table.options.ajaxSorting && _this82.table.modExists(\"sort\")) {\n\t\t\tvar sorters = self.table.modules.sort.getSort();\n\n\t\t\tsorters.forEach(function (item) {\n\t\t\t\tdelete item.column;\n\t\t\t});\n\n\t\t\tpageParams[_this82.dataSentNames.sorters] = sorters;\n\t\t}\n\n\t\t//set filter data if defined\n\t\tif (_this82.table.options.ajaxFiltering && _this82.table.modExists(\"filter\")) {\n\t\t\tvar filters = self.table.modules.filter.getFilters(true, true);\n\t\t\tpageParams[_this82.dataSentNames.filters] = filters;\n\t\t}\n\n\t\tself.table.modules.ajax.setParams(pageParams);\n\n\t\tself.table.modules.ajax.sendRequest(_this82.progressiveLoad).then(function (data) {\n\t\t\tself._parseRemoteData(data);\n\t\t\tresolve();\n\t\t}).catch(function (e) {\n\t\t\treject();\n\t\t});\n\n\t\tself.table.modules.ajax.setParams(oldParams);\n\t});\n};\n\nPage.prototype._parseRemoteData = function (data) {\n\tvar self = this,\n\t left,\n\t data,\n\t margin;\n\n\tif (typeof data[this.dataReceivedNames.last_page] === \"undefined\") {\n\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.last_page + \"' property\");\n\t}\n\n\tif (data[this.dataReceivedNames.data]) {\n\t\tthis.max = parseInt(data[this.dataReceivedNames.last_page]) || 1;\n\n\t\tif (this.progressiveLoad) {\n\t\t\tswitch (this.mode) {\n\t\t\t\tcase \"progressive_load\":\n\n\t\t\t\t\tif (this.page == 1) {\n\t\t\t\t\t\tthis.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.table.rowManager.addRows(data[this.dataReceivedNames.data]);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.page < this.max) {\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t\t\t\t\t}, self.table.options.ajaxProgressiveLoadDelay);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"progressive_scroll\":\n\t\t\t\t\tdata = this.table.rowManager.getData().concat(data[this.dataReceivedNames.data]);\n\n\t\t\t\t\tthis.table.rowManager.setData(data, true, this.initialLoad && this.page == 1);\n\n\t\t\t\t\tmargin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;\n\n\t\t\t\t\tif (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {\n\t\t\t\t\t\tself.nextPage().then(function () {}).catch(function () {});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tleft = this.table.rowManager.scrollLeft;\n\n\t\t\tthis.table.rowManager.setData(data[this.dataReceivedNames.data], false, this.initialLoad && this.page == 1);\n\n\t\t\tthis.table.rowManager.scrollHorizontal(left);\n\n\t\t\tthis.table.columnManager.scrollHorizontal(left);\n\n\t\t\tthis.table.options.pageLoaded.call(this.table, this.getPage());\n\t\t}\n\n\t\tthis.initialLoad = false;\n\t} else {\n\t\tconsole.warn(\"Remote Pagination Error - Server response missing '\" + this.dataReceivedNames.data + \"' property\");\n\t}\n};\n\n//handle the footer element being redrawn\nPage.prototype.footerRedraw = function () {\n\tvar footer = this.table.footerManager.element;\n\n\tif (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {\n\t\tthis.pagesElement.style.display = 'none';\n\t} else {\n\t\tthis.pagesElement.style.display = '';\n\n\t\tif (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {\n\t\t\tthis.pagesElement.style.display = 'none';\n\t\t}\n\t}\n};\n\n//set the paramter names for pagination requests\nPage.prototype.paginationDataSentNames = {\n\t\"page\": \"page\",\n\t\"size\": \"size\",\n\t\"sorters\": \"sorters\",\n\t// \"sort_dir\":\"sort_dir\",\n\t\"filters\": \"filters\"\n\t// \"filter_value\":\"filter_value\",\n\t// \"filter_type\":\"filter_type\",\n};\n\n//set the property names for pagination responses\nPage.prototype.paginationDataReceivedNames = {\n\t\"current_page\": \"current_page\",\n\t\"last_page\": \"last_page\",\n\t\"data\": \"data\"\n};\n\nTabulator.prototype.registerModule(\"page\", Page);\n\nvar Persistence = function Persistence(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.mode = \"\";\n\tthis.id = \"\";\n\t// this.persistProps = [\"field\", \"width\", \"visible\"];\n\tthis.defWatcherBlock = false;\n\tthis.config = {};\n\tthis.readFunc = false;\n\tthis.writeFunc = false;\n};\n\n// Test for whether localStorage is available for use.\nPersistence.prototype.localStorageTest = function () {\n\tvar testKey = \"_tabulator_test\";\n\n\ttry {\n\t\twindow.localStorage.setItem(testKey, testKey);\n\t\twindow.localStorage.removeItem(testKey);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\n//setup parameters\nPersistence.prototype.initialize = function () {\n\t//determine persistent layout storage type\n\n\tvar mode = this.table.options.persistenceMode,\n\t id = this.table.options.persistenceID,\n\t retreivedData;\n\n\tthis.mode = mode !== true ? mode : this.localStorageTest() ? \"local\" : \"cookie\";\n\n\tif (this.table.options.persistenceReaderFunc) {\n\t\tif (typeof this.table.options.persistenceReaderFunc === \"function\") {\n\t\t\tthis.readFunc = this.table.options.persistenceReaderFunc;\n\t\t} else {\n\t\t\tif (this.readers[this.table.options.persistenceReaderFunc]) {\n\t\t\t\tthis.readFunc = this.readers[this.table.options.persistenceReaderFunc];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.table.options.persistenceReaderFunc);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (this.readers[this.mode]) {\n\t\t\tthis.readFunc = this.readers[this.mode];\n\t\t} else {\n\t\t\tconsole.warn(\"Persistence Read Error - invalid reader set\", this.mode);\n\t\t}\n\t}\n\n\tif (this.table.options.persistenceWriterFunc) {\n\t\tif (typeof this.table.options.persistenceWriterFunc === \"function\") {\n\t\t\tthis.writeFunc = this.table.options.persistenceWriterFunc;\n\t\t} else {\n\t\t\tif (this.readers[this.table.options.persistenceWriterFunc]) {\n\t\t\t\tthis.writeFunc = this.readers[this.table.options.persistenceWriterFunc];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Persistence Write Error - invalid reader set\", this.table.options.persistenceWriterFunc);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (this.writers[this.mode]) {\n\t\t\tthis.writeFunc = this.writers[this.mode];\n\t\t} else {\n\t\t\tconsole.warn(\"Persistence Write Error - invalid writer set\", this.mode);\n\t\t}\n\t}\n\n\t//set storage tag\n\tthis.id = \"tabulator-\" + (id || this.table.element.getAttribute(\"id\") || \"\");\n\n\tthis.config = {\n\t\tsort: this.table.options.persistence === true || this.table.options.persistence.sort,\n\t\tfilter: this.table.options.persistence === true || this.table.options.persistence.filter,\n\t\tgroup: this.table.options.persistence === true || this.table.options.persistence.group,\n\t\tpage: this.table.options.persistence === true || this.table.options.persistence.page,\n\t\tcolumns: this.table.options.persistence === true ? [\"title\", \"width\", \"visible\"] : this.table.options.persistence.columns\n\t};\n\n\t//load pagination data if needed\n\tif (this.config.page) {\n\t\tretreivedData = this.retreiveData(\"page\");\n\n\t\tif (retreivedData) {\n\t\t\tif (typeof retreivedData.paginationSize !== \"undefined\" && (this.config.page === true || this.config.page.size)) {\n\t\t\t\tthis.table.options.paginationSize = retreivedData.paginationSize;\n\t\t\t}\n\n\t\t\tif (typeof retreivedData.paginationInitialPage !== \"undefined\" && (this.config.page === true || this.config.page.page)) {\n\t\t\t\tthis.table.options.paginationInitialPage = retreivedData.paginationInitialPage;\n\t\t\t}\n\t\t}\n\t}\n\n\t//load group data if needed\n\tif (this.config.group) {\n\t\tretreivedData = this.retreiveData(\"group\");\n\n\t\tif (retreivedData) {\n\t\t\tif (typeof retreivedData.groupBy !== \"undefined\" && (this.config.group === true || this.config.group.groupBy)) {\n\t\t\t\tthis.table.options.groupBy = retreivedData.groupBy;\n\t\t\t}\n\t\t\tif (typeof retreivedData.groupStartOpen !== \"undefined\" && (this.config.group === true || this.config.group.groupStartOpen)) {\n\t\t\t\tthis.table.options.groupStartOpen = retreivedData.groupStartOpen;\n\t\t\t}\n\t\t\tif (typeof retreivedData.groupHeader !== \"undefined\" && (this.config.group === true || this.config.group.groupHeader)) {\n\t\t\t\tthis.table.options.groupHeader = retreivedData.groupHeader;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (this.config.columns) {\n\t\tthis.table.options.columns = this.load(\"columns\", this.table.options.columns);\n\t}\n};\n\nPersistence.prototype.initializeColumn = function (column) {\n\tvar self = this,\n\t def,\n\t keys;\n\n\tif (this.config.columns) {\n\t\tthis.defWatcherBlock = true;\n\n\t\tdef = column.getDefinition();\n\n\t\tkeys = this.config.columns === true ? Object.keys(def) : this.config.columns;\n\n\t\tkeys.forEach(function (key) {\n\t\t\tvar props = Object.getOwnPropertyDescriptor(def, key);\n\t\t\tvar value = def[key];\n\t\t\tif (props) {\n\t\t\t\tObject.defineProperty(def, key, {\n\t\t\t\t\tset: function set(newValue) {\n\t\t\t\t\t\tvalue = newValue;\n\n\t\t\t\t\t\tif (!self.defWatcherBlock) {\n\t\t\t\t\t\t\tself.save(\"columns\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (props.set) {\n\t\t\t\t\t\t\tprops.set(newValue);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tget: function get() {\n\t\t\t\t\t\tif (props.get) {\n\t\t\t\t\t\t\tprops.get();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tthis.defWatcherBlock = false;\n\t}\n};\n\n//load saved definitions\nPersistence.prototype.load = function (type, current) {\n\tvar data = this.retreiveData(type);\n\n\tif (current) {\n\t\tdata = data ? this.mergeDefinition(current, data) : current;\n\t}\n\n\treturn data;\n};\n\n//retreive data from memory\nPersistence.prototype.retreiveData = function (type) {\n\treturn this.readFunc ? this.readFunc(this.id, type) : false;\n};\n\n//merge old and new column definitions\nPersistence.prototype.mergeDefinition = function (oldCols, newCols) {\n\tvar self = this,\n\t output = [];\n\n\t// oldCols = oldCols || [];\n\tnewCols = newCols || [];\n\n\tnewCols.forEach(function (column, to) {\n\n\t\tvar from = self._findColumn(oldCols, column),\n\t\t keys;\n\n\t\tif (from) {\n\n\t\t\tif (self.config.columns === true || self.config.columns == undefined) {\n\t\t\t\tkeys = Object.keys(from);\n\t\t\t\tkeys.push(\"width\");\n\t\t\t} else {\n\t\t\t\tkeys = self.config.columns;\n\t\t\t}\n\n\t\t\tkeys.forEach(function (key) {\n\t\t\t\tif (key !== \"columns\" && typeof column[key] !== \"undefined\") {\n\t\t\t\t\tfrom[key] = column[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (from.columns) {\n\t\t\t\tfrom.columns = self.mergeDefinition(from.columns, column.columns);\n\t\t\t}\n\n\t\t\toutput.push(from);\n\t\t}\n\t});\n\n\toldCols.forEach(function (column, i) {\n\t\tvar from = self._findColumn(newCols, column);\n\t\tif (!from) {\n\t\t\tif (output.length > i) {\n\t\t\t\toutput.splice(i, 0, column);\n\t\t\t} else {\n\t\t\t\toutput.push(column);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn output;\n};\n\n//find matching columns\nPersistence.prototype._findColumn = function (columns, subject) {\n\tvar type = subject.columns ? \"group\" : subject.field ? \"field\" : \"object\";\n\n\treturn columns.find(function (col) {\n\t\tswitch (type) {\n\t\t\tcase \"group\":\n\t\t\t\treturn col.title === subject.title && col.columns.length === subject.columns.length;\n\t\t\t\tbreak;\n\n\t\t\tcase \"field\":\n\t\t\t\treturn col.field === subject.field;\n\t\t\t\tbreak;\n\n\t\t\tcase \"object\":\n\t\t\t\treturn col === subject;\n\t\t\t\tbreak;\n\t\t}\n\t});\n};\n\n//save data\nPersistence.prototype.save = function (type) {\n\tvar data = {};\n\n\tswitch (type) {\n\t\tcase \"columns\":\n\t\t\tdata = this.parseColumns(this.table.columnManager.getColumns());\n\t\t\tbreak;\n\n\t\tcase \"filter\":\n\t\t\tdata = this.table.modules.filter.getFilters();\n\t\t\tbreak;\n\n\t\tcase \"sort\":\n\t\t\tdata = this.validateSorters(this.table.modules.sort.getSort());\n\t\t\tbreak;\n\n\t\tcase \"group\":\n\t\t\tdata = this.getGroupConfig();\n\t\t\tbreak;\n\n\t\tcase \"page\":\n\t\t\tdata = this.getPageConfig();\n\t\t\tbreak;\n\t}\n\n\tif (this.writeFunc) {\n\t\tthis.writeFunc(this.id, type, data);\n\t}\n};\n\n//ensure sorters contain no function data\nPersistence.prototype.validateSorters = function (data) {\n\tdata.forEach(function (item) {\n\t\titem.column = item.field;\n\t\tdelete item.field;\n\t});\n\n\treturn data;\n};\n\nPersistence.prototype.getGroupConfig = function () {\n\tvar data = {};\n\n\tif (this.config.group) {\n\t\tif (this.config.group === true || this.config.group.groupBy) {\n\t\t\tdata.groupBy = this.table.options.groupBy;\n\t\t}\n\n\t\tif (this.config.group === true || this.config.group.groupStartOpen) {\n\t\t\tdata.groupStartOpen = this.table.options.groupStartOpen;\n\t\t}\n\n\t\tif (this.config.group === true || this.config.group.groupHeader) {\n\t\t\tdata.groupHeader = this.table.options.groupHeader;\n\t\t}\n\t}\n\n\treturn data;\n};\n\nPersistence.prototype.getPageConfig = function () {\n\tvar data = {};\n\n\tif (this.config.page) {\n\t\tif (this.config.page === true || this.config.page.size) {\n\t\t\tdata.paginationSize = this.table.modules.page.getPageSize();\n\t\t}\n\n\t\tif (this.config.page === true || this.config.page.page) {\n\t\t\tdata.paginationInitialPage = this.table.modules.page.getPage();\n\t\t}\n\t}\n\n\treturn data;\n};\n\n//parse columns for data to store\nPersistence.prototype.parseColumns = function (columns) {\n\tvar self = this,\n\t definitions = [],\n\t excludedKeys = [\"headerContextMenu\", \"headerMenu\", \"contextMenu\", \"clickMenu\"];\n\n\tcolumns.forEach(function (column) {\n\t\tvar defStore = {},\n\t\t colDef = column.getDefinition(),\n\t\t keys;\n\n\t\tif (column.isGroup) {\n\t\t\tdefStore.title = colDef.title;\n\t\t\tdefStore.columns = self.parseColumns(column.getColumns());\n\t\t} else {\n\t\t\tdefStore.field = column.getField();\n\n\t\t\tif (self.config.columns === true || self.config.columns == undefined) {\n\t\t\t\tkeys = Object.keys(colDef);\n\t\t\t\tkeys.push(\"width\");\n\t\t\t} else {\n\t\t\t\tkeys = self.config.columns;\n\t\t\t}\n\n\t\t\tkeys.forEach(function (key) {\n\n\t\t\t\tswitch (key) {\n\t\t\t\t\tcase \"width\":\n\t\t\t\t\t\tdefStore.width = column.getWidth();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"visible\":\n\t\t\t\t\t\tdefStore.visible = column.visible;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif (typeof colDef[key] !== \"function\" && excludedKeys.indexOf(key) === -1) {\n\t\t\t\t\t\t\tdefStore[key] = colDef[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tdefinitions.push(defStore);\n\t});\n\n\treturn definitions;\n};\n\n// read peristence information from storage\nPersistence.prototype.readers = {\n\tlocal: function local(id, type) {\n\t\tvar data = localStorage.getItem(id + \"-\" + type);\n\n\t\treturn data ? JSON.parse(data) : false;\n\t},\n\tcookie: function cookie(id, type) {\n\t\tvar cookie = document.cookie,\n\t\t key = id + \"-\" + type,\n\t\t cookiePos = cookie.indexOf(key + \"=\"),\n\t\t end,\n\t\t data;\n\n\t\t//if cookie exists, decode and load column data into tabulator\n\t\tif (cookiePos > -1) {\n\t\t\tcookie = cookie.substr(cookiePos);\n\n\t\t\tend = cookie.indexOf(\";\");\n\n\t\t\tif (end > -1) {\n\t\t\t\tcookie = cookie.substr(0, end);\n\t\t\t}\n\n\t\t\tdata = cookie.replace(key + \"=\", \"\");\n\t\t}\n\n\t\treturn data ? JSON.parse(data) : false;\n\t}\n};\n\n//write persistence information to storage\nPersistence.prototype.writers = {\n\tlocal: function local(id, type, data) {\n\t\tlocalStorage.setItem(id + \"-\" + type, JSON.stringify(data));\n\t},\n\tcookie: function cookie(id, type, data) {\n\t\tvar expireDate = new Date();\n\n\t\texpireDate.setDate(expireDate.getDate() + 10000);\n\n\t\tdocument.cookie = id + \"-\" + type + \"=\" + JSON.stringify(data) + \"; expires=\" + expireDate.toUTCString();\n\t}\n};\n\nTabulator.prototype.registerModule(\"persistence\", Persistence);\n\nvar Print = function Print(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.element = false;\n\tthis.manualBlock = false;\n};\n\nPrint.prototype.initialize = function () {\n\twindow.addEventListener(\"beforeprint\", this.replaceTable.bind(this));\n\twindow.addEventListener(\"afterprint\", this.cleanup.bind(this));\n};\n\nPrint.prototype.replaceTable = function () {\n\tif (!this.manualBlock) {\n\t\tthis.element = document.createElement(\"div\");\n\t\tthis.element.classList.add(\"tabulator-print-table\");\n\n\t\tthis.element.appendChild(this.table.modules.export.genereateTable(this.table.options.printConfig, this.table.options.printStyled, this.table.options.printRowRange, \"print\"));\n\n\t\tthis.table.element.style.display = \"none\";\n\n\t\tthis.table.element.parentNode.insertBefore(this.element, this.table.element);\n\t}\n};\n\nPrint.prototype.cleanup = function () {\n\tdocument.body.classList.remove(\"tabulator-print-fullscreen-hide\");\n\n\tif (this.element && this.element.parentNode) {\n\t\tthis.element.parentNode.removeChild(this.element);\n\t\tthis.table.element.style.display = \"\";\n\t}\n};\n\nPrint.prototype.printFullscreen = function (visible, style, config) {\n\tvar scrollX = window.scrollX,\n\t scrollY = window.scrollY,\n\t headerEl = document.createElement(\"div\"),\n\t footerEl = document.createElement(\"div\"),\n\t tableEl = this.table.modules.export.genereateTable(typeof config != \"undefined\" ? config : this.table.options.printConfig, typeof style != \"undefined\" ? style : this.table.options.printStyled, visible, \"print\"),\n\t headerContent,\n\t footerContent;\n\n\tthis.manualBlock = true;\n\n\tthis.element = document.createElement(\"div\");\n\tthis.element.classList.add(\"tabulator-print-fullscreen\");\n\n\tif (this.table.options.printHeader) {\n\t\theaderEl.classList.add(\"tabulator-print-header\");\n\n\t\theaderContent = typeof this.table.options.printHeader == \"function\" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;\n\n\t\tif (typeof headerContent == \"string\") {\n\t\t\theaderEl.innerHTML = headerContent;\n\t\t} else {\n\t\t\theaderEl.appendChild(headerContent);\n\t\t}\n\n\t\tthis.element.appendChild(headerEl);\n\t}\n\n\tthis.element.appendChild(tableEl);\n\n\tif (this.table.options.printFooter) {\n\t\tfooterEl.classList.add(\"tabulator-print-footer\");\n\n\t\tfooterContent = typeof this.table.options.printFooter == \"function\" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;\n\n\t\tif (typeof footerContent == \"string\") {\n\t\t\tfooterEl.innerHTML = footerContent;\n\t\t} else {\n\t\t\tfooterEl.appendChild(footerContent);\n\t\t}\n\n\t\tthis.element.appendChild(footerEl);\n\t}\n\n\tdocument.body.classList.add(\"tabulator-print-fullscreen-hide\");\n\tdocument.body.appendChild(this.element);\n\n\tif (this.table.options.printFormatter) {\n\t\tthis.table.options.printFormatter(this.element, tableEl);\n\t}\n\n\twindow.print();\n\n\tthis.cleanup();\n\n\twindow.scrollTo(scrollX, scrollY);\n\n\tthis.manualBlock = false;\n};\n\nTabulator.prototype.registerModule(\"print\", Print);\nvar ReactiveData = function ReactiveData(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.data = false;\n\tthis.blocked = false; //block reactivity while performing update\n\tthis.origFuncs = {}; // hold original data array functions to allow replacement after data is done with\n\tthis.currentVersion = 0;\n};\n\nReactiveData.prototype.watchData = function (data) {\n\tvar self = this,\n\t pushFunc,\n\t version;\n\n\tthis.currentVersion++;\n\n\tversion = this.currentVersion;\n\n\tself.unwatchData();\n\n\tself.data = data;\n\n\t//override array push function\n\tself.origFuncs.push = data.push;\n\n\tObject.defineProperty(self.data, \"push\", {\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t\tvalue: function value() {\n\t\t\tvar args = Array.from(arguments);\n\n\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\targs.forEach(function (arg) {\n\t\t\t\t\tself.table.rowManager.addRowActual(arg, false);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn self.origFuncs.push.apply(data, arguments);\n\t\t}\n\t});\n\n\t//override array unshift function\n\tself.origFuncs.unshift = data.unshift;\n\n\tObject.defineProperty(self.data, \"unshift\", {\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t\tvalue: function value() {\n\t\t\tvar args = Array.from(arguments);\n\n\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\targs.forEach(function (arg) {\n\t\t\t\t\tself.table.rowManager.addRowActual(arg, true);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn self.origFuncs.unshift.apply(data, arguments);\n\t\t}\n\t});\n\n\t//override array shift function\n\tself.origFuncs.shift = data.shift;\n\n\tObject.defineProperty(self.data, \"shift\", {\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t\tvalue: function value() {\n\t\t\tvar row;\n\n\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\tif (self.data.length) {\n\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[0]);\n\n\t\t\t\t\tif (row) {\n\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn self.origFuncs.shift.call(data);\n\t\t}\n\t});\n\n\t//override array pop function\n\tself.origFuncs.pop = data.pop;\n\n\tObject.defineProperty(self.data, \"pop\", {\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t\tvalue: function value() {\n\t\t\tvar row;\n\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\tif (self.data.length) {\n\t\t\t\t\trow = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);\n\n\t\t\t\t\tif (row) {\n\t\t\t\t\t\trow.deleteActual();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn self.origFuncs.pop.call(data);\n\t\t}\n\t});\n\n\t//override array splice function\n\tself.origFuncs.splice = data.splice;\n\n\tObject.defineProperty(self.data, \"splice\", {\n\t\tenumerable: false,\n\t\tconfigurable: true,\n\t\tvalue: function value() {\n\t\t\tvar args = Array.from(arguments),\n\t\t\t start = args[0] < 0 ? data.length + args[0] : args[0],\n\t\t\t end = args[1],\n\t\t\t newRows = args[2] ? args.slice(2) : false,\n\t\t\t startRow;\n\n\t\t\tif (!self.blocked && version === self.currentVersion) {\n\n\t\t\t\t//add new rows\n\t\t\t\tif (newRows) {\n\t\t\t\t\tstartRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;\n\n\t\t\t\t\tif (startRow) {\n\t\t\t\t\t\tnewRows.forEach(function (rowData) {\n\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, startRow, true);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewRows = newRows.slice().reverse();\n\n\t\t\t\t\t\tnewRows.forEach(function (rowData) {\n\t\t\t\t\t\t\tself.table.rowManager.addRowActual(rowData, true, false, true);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//delete removed rows\n\t\t\t\tif (end !== 0) {\n\t\t\t\t\tvar oldRows = data.slice(start, typeof args[1] === \"undefined\" ? args[1] : start + end);\n\n\t\t\t\t\toldRows.forEach(function (rowData, i) {\n\t\t\t\t\t\tvar row = self.table.rowManager.getRowFromDataObject(rowData);\n\n\t\t\t\t\t\tif (row) {\n\t\t\t\t\t\t\trow.deleteActual(i !== oldRows.length - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (newRows || end !== 0) {\n\t\t\t\t\tself.table.rowManager.reRenderInPosition();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn self.origFuncs.splice.apply(data, arguments);\n\t\t}\n\t});\n};\n\nReactiveData.prototype.unwatchData = function () {\n\tif (this.data !== false) {\n\t\tfor (var key in this.origFuncs) {\n\t\t\tObject.defineProperty(this.data, key, {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: this.origFuncs.key\n\t\t\t});\n\t\t}\n\t}\n};\n\nReactiveData.prototype.watchRow = function (row) {\n\tvar data = row.getData();\n\n\tthis.blocked = true;\n\n\tfor (var key in data) {\n\t\tthis.watchKey(row, data, key);\n\t}\n\n\tif (this.table.options.dataTree) {\n\t\tthis.watchTreeChildren(row);\n\t}\n\n\tthis.blocked = false;\n};\n\nReactiveData.prototype.watchTreeChildren = function (row) {\n\tvar self = this,\n\t childField = row.getData()[this.table.options.dataTreeChildField],\n\t origFuncs = {};\n\n\tfunction rebuildTree() {\n\t\tself.table.modules.dataTree.initializeRow(row);\n\t\tself.table.modules.dataTree.layoutRow(row);\n\t\tself.table.rowManager.refreshActiveData(\"tree\", false, true);\n\t}\n\n\tif (childField) {\n\n\t\torigFuncs.push = childField.push;\n\n\t\tObject.defineProperty(childField, \"push\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar result = origFuncs.push.apply(childField, arguments);\n\n\t\t\t\trebuildTree();\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\n\t\torigFuncs.unshift = childField.unshift;\n\n\t\tObject.defineProperty(childField, \"unshift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar result = origFuncs.unshift.apply(childField, arguments);\n\n\t\t\t\trebuildTree();\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\n\t\torigFuncs.shift = childField.shift;\n\n\t\tObject.defineProperty(childField, \"shift\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar result = origFuncs.shift.call(childField);\n\n\t\t\t\trebuildTree();\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\n\t\torigFuncs.pop = childField.pop;\n\n\t\tObject.defineProperty(childField, \"pop\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar result = origFuncs.pop.call(childField);\n\n\t\t\t\trebuildTree();\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\n\t\torigFuncs.splice = childField.splice;\n\n\t\tObject.defineProperty(childField, \"splice\", {\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true,\n\t\t\tvalue: function value() {\n\t\t\t\tvar result = origFuncs.splice.apply(childField, arguments);\n\n\t\t\t\trebuildTree();\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t});\n\t}\n};\n\nReactiveData.prototype.watchKey = function (row, data, key) {\n\tvar self = this,\n\t props = Object.getOwnPropertyDescriptor(data, key),\n\t value = data[key],\n\t version = this.currentVersion;\n\n\tObject.defineProperty(data, key, {\n\t\tset: function set(newValue) {\n\t\t\tvalue = newValue;\n\t\t\tif (!self.blocked && version === self.currentVersion) {\n\t\t\t\tvar update = {};\n\t\t\t\tupdate[key] = newValue;\n\t\t\t\trow.updateData(update);\n\t\t\t}\n\n\t\t\tif (props.set) {\n\t\t\t\tprops.set(newValue);\n\t\t\t}\n\t\t},\n\t\tget: function get() {\n\n\t\t\tif (props.get) {\n\t\t\t\tprops.get();\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\t});\n};\n\nReactiveData.prototype.unwatchRow = function (row) {\n\tvar data = row.getData();\n\n\tfor (var key in data) {\n\t\tObject.defineProperty(data, key, {\n\t\t\tvalue: data[key]\n\t\t});\n\t}\n};\n\nReactiveData.prototype.block = function () {\n\tthis.blocked = true;\n};\n\nReactiveData.prototype.unblock = function () {\n\tthis.blocked = false;\n};\n\nTabulator.prototype.registerModule(\"reactiveData\", ReactiveData);\n\nvar ResizeColumns = function ResizeColumns(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.startColumn = false;\n\tthis.startX = false;\n\tthis.startWidth = false;\n\tthis.handle = null;\n\tthis.prevHandle = null;\n};\n\nResizeColumns.prototype.initializeColumn = function (type, column, element) {\n\tvar self = this,\n\t variableHeight = false,\n\t mode = this.table.options.resizableColumns;\n\n\t//set column resize mode\n\tif (type === \"header\") {\n\t\tvariableHeight = column.definition.formatter == \"textarea\" || column.definition.variableHeight;\n\t\tcolumn.modules.resize = { variableHeight: variableHeight };\n\t}\n\n\tif (mode === true || mode == type) {\n\n\t\tvar handle = document.createElement('div');\n\t\thandle.className = \"tabulator-col-resize-handle\";\n\n\t\tvar prevHandle = document.createElement('div');\n\t\tprevHandle.className = \"tabulator-col-resize-handle prev\";\n\n\t\thandle.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar handleDown = function handleDown(e) {\n\t\t\tvar nearestColumn = column.getLastColumn();\n\n\t\t\tif (nearestColumn && self._checkResizability(nearestColumn)) {\n\t\t\t\tself.startColumn = column;\n\t\t\t\tself._mouseDown(e, nearestColumn, handle);\n\t\t\t}\n\t\t};\n\n\t\thandle.addEventListener(\"mousedown\", handleDown);\n\t\thandle.addEventListener(\"touchstart\", handleDown, { passive: true });\n\n\t\t//reszie column on double click\n\t\thandle.addEventListener(\"dblclick\", function (e) {\n\t\t\tvar col = column.getLastColumn();\n\n\t\t\tif (col && self._checkResizability(col)) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tcol.reinitializeWidth(true);\n\t\t\t}\n\t\t});\n\n\t\tprevHandle.addEventListener(\"click\", function (e) {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tvar prevHandleDown = function prevHandleDown(e) {\n\t\t\tvar nearestColumn, colIndex, prevColumn;\n\n\t\t\tnearestColumn = column.getFirstColumn();\n\n\t\t\tif (nearestColumn) {\n\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\n\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\n\n\t\t\t\tif (prevColumn && self._checkResizability(prevColumn)) {\n\t\t\t\t\tself.startColumn = column;\n\t\t\t\t\tself._mouseDown(e, prevColumn, prevHandle);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\n\t\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, { passive: true });\n\n\t\t//resize column on double click\n\t\tprevHandle.addEventListener(\"dblclick\", function (e) {\n\t\t\tvar nearestColumn, colIndex, prevColumn;\n\n\t\t\tnearestColumn = column.getFirstColumn();\n\n\t\t\tif (nearestColumn) {\n\t\t\t\tcolIndex = self.table.columnManager.findColumnIndex(nearestColumn);\n\t\t\t\tprevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;\n\n\t\t\t\tif (prevColumn && self._checkResizability(prevColumn)) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tprevColumn.reinitializeWidth(true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\telement.appendChild(handle);\n\t\telement.appendChild(prevHandle);\n\t}\n};\n\nResizeColumns.prototype._checkResizability = function (column) {\n\treturn typeof column.definition.resizable != \"undefined\" ? column.definition.resizable : this.table.options.resizableColumns;\n};\n\nResizeColumns.prototype._mouseDown = function (e, column, handle) {\n\tvar self = this;\n\n\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\tfunction mouseMove(e) {\n\t\t// self.table.columnManager.tempScrollBlock();\n\n\t\tif (self.table.rtl) {\n\t\t\tcolumn.setWidth(self.startWidth - ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\n\t\t} else {\n\t\t\tcolumn.setWidth(self.startWidth + ((typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX) - self.startX));\n\t\t}\n\n\t\tif (self.table.options.virtualDomHoz) {\n\t\t\tself.table.vdomHoz.reinitialize(true);\n\t\t}\n\n\t\tif (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {\n\t\t\tcolumn.checkCellHeights();\n\t\t}\n\t}\n\n\tfunction mouseUp(e) {\n\n\t\t//block editor from taking action while resizing is taking place\n\t\tif (self.startColumn.modules.edit) {\n\t\t\tself.startColumn.modules.edit.blocked = false;\n\t\t}\n\n\t\tif (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {\n\t\t\tcolumn.checkCellHeights();\n\t\t}\n\n\t\tdocument.body.removeEventListener(\"mouseup\", mouseUp);\n\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\tif (self.table.options.persistence && self.table.modExists(\"persistence\", true) && self.table.modules.persistence.config.columns) {\n\t\t\tself.table.modules.persistence.save(\"columns\");\n\t\t}\n\n\t\tself.table.options.columnResized.call(self.table, column.getComponent());\n\t}\n\n\te.stopPropagation(); //prevent resize from interfereing with movable columns\n\n\t//block editor from taking action while resizing is taking place\n\tif (self.startColumn.modules.edit) {\n\t\tself.startColumn.modules.edit.blocked = true;\n\t}\n\n\tself.startX = typeof e.screenX === \"undefined\" ? e.touches[0].screenX : e.screenX;\n\tself.startWidth = column.getWidth();\n\n\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\thandle.addEventListener(\"touchmove\", mouseMove, { passive: true });\n\thandle.addEventListener(\"touchend\", mouseUp);\n};\n\nTabulator.prototype.registerModule(\"resizeColumns\", ResizeColumns);\nvar ResizeRows = function ResizeRows(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.startColumn = false;\n\tthis.startY = false;\n\tthis.startHeight = false;\n\tthis.handle = null;\n\tthis.prevHandle = null;\n};\n\nResizeRows.prototype.initializeRow = function (row) {\n\tvar self = this,\n\t rowEl = row.getElement();\n\n\tvar handle = document.createElement('div');\n\thandle.className = \"tabulator-row-resize-handle\";\n\n\tvar prevHandle = document.createElement('div');\n\tprevHandle.className = \"tabulator-row-resize-handle prev\";\n\n\thandle.addEventListener(\"click\", function (e) {\n\t\te.stopPropagation();\n\t});\n\n\tvar handleDown = function handleDown(e) {\n\t\tself.startRow = row;\n\t\tself._mouseDown(e, row, handle);\n\t};\n\n\thandle.addEventListener(\"mousedown\", handleDown);\n\thandle.addEventListener(\"touchstart\", handleDown, { passive: true });\n\n\tprevHandle.addEventListener(\"click\", function (e) {\n\t\te.stopPropagation();\n\t});\n\n\tvar prevHandleDown = function prevHandleDown(e) {\n\t\tvar prevRow = self.table.rowManager.prevDisplayRow(row);\n\n\t\tif (prevRow) {\n\t\t\tself.startRow = prevRow;\n\t\t\tself._mouseDown(e, prevRow, prevHandle);\n\t\t}\n\t};\n\n\tprevHandle.addEventListener(\"mousedown\", prevHandleDown);\n\tprevHandle.addEventListener(\"touchstart\", prevHandleDown, { passive: true });\n\n\trowEl.appendChild(handle);\n\trowEl.appendChild(prevHandle);\n};\n\nResizeRows.prototype._mouseDown = function (e, row, handle) {\n\tvar self = this;\n\n\tself.table.element.classList.add(\"tabulator-block-select\");\n\n\tfunction mouseMove(e) {\n\t\trow.setHeight(self.startHeight + ((typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY) - self.startY));\n\t}\n\n\tfunction mouseUp(e) {\n\n\t\t// //block editor from taking action while resizing is taking place\n\t\t// if(self.startColumn.modules.edit){\n\t\t// \tself.startColumn.modules.edit.blocked = false;\n\t\t// }\n\n\t\tdocument.body.removeEventListener(\"mouseup\", mouseMove);\n\t\tdocument.body.removeEventListener(\"mousemove\", mouseMove);\n\n\t\thandle.removeEventListener(\"touchmove\", mouseMove);\n\t\thandle.removeEventListener(\"touchend\", mouseUp);\n\n\t\tself.table.element.classList.remove(\"tabulator-block-select\");\n\n\t\tself.table.options.rowResized.call(this.table, row.getComponent());\n\t}\n\n\te.stopPropagation(); //prevent resize from interfereing with movable columns\n\n\t//block editor from taking action while resizing is taking place\n\t// if(self.startColumn.modules.edit){\n\t// \tself.startColumn.modules.edit.blocked = true;\n\t// }\n\n\tself.startY = typeof e.screenY === \"undefined\" ? e.touches[0].screenY : e.screenY;\n\tself.startHeight = row.getHeight();\n\n\tdocument.body.addEventListener(\"mousemove\", mouseMove);\n\tdocument.body.addEventListener(\"mouseup\", mouseUp);\n\n\thandle.addEventListener(\"touchmove\", mouseMove, { passive: true });\n\thandle.addEventListener(\"touchend\", mouseUp);\n};\n\nTabulator.prototype.registerModule(\"resizeRows\", ResizeRows);\nvar ResizeTable = function ResizeTable(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.binding = false;\n\tthis.observer = false;\n\tthis.containerObserver = false;\n\n\tthis.tableHeight = 0;\n\tthis.tableWidth = 0;\n\tthis.containerHeight = 0;\n\tthis.containerWidth = 0;\n\n\tthis.autoResize = false;\n};\n\nResizeTable.prototype.initialize = function (row) {\n\tvar _this83 = this;\n\n\tvar table = this.table,\n\t tableStyle;\n\n\tthis.tableHeight = table.element.clientHeight;\n\tthis.tableWidth = table.element.clientWidth;\n\n\tif (table.element.parentNode) {\n\t\tthis.containerHeight = table.element.parentNode.clientHeight;\n\t\tthis.containerWidth = table.element.parentNode.clientWidth;\n\t}\n\n\tif (typeof ResizeObserver !== \"undefined\" && table.rowManager.getRenderMode() === \"virtual\") {\n\n\t\tthis.autoResize = true;\n\n\t\tthis.observer = new ResizeObserver(function (entry) {\n\t\t\tif (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {\n\n\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\n\t\t\t\tif (_this83.tableHeight != nodeHeight || _this83.tableWidth != nodeWidth) {\n\t\t\t\t\t_this83.tableHeight = nodeHeight;\n\t\t\t\t\t_this83.tableWidth = nodeWidth;\n\n\t\t\t\t\tif (table.element.parentNode) {\n\t\t\t\t\t\t_this83.containerHeight = table.element.parentNode.clientHeight;\n\t\t\t\t\t\t_this83.containerWidth = table.element.parentNode.clientWidth;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (table.options.virtualDomHoz) {\n\t\t\t\t\t\ttable.vdomHoz.reinitialize(true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttable.redraw();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.observer.observe(table.element);\n\n\t\ttableStyle = window.getComputedStyle(table.element);\n\n\t\tif (this.table.element.parentNode && !this.table.rowManager.fixedHeight && (tableStyle.getPropertyValue(\"max-height\") || tableStyle.getPropertyValue(\"min-height\"))) {\n\n\t\t\tthis.containerObserver = new ResizeObserver(function (entry) {\n\t\t\t\tif (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {\n\n\t\t\t\t\tvar nodeHeight = Math.floor(entry[0].contentRect.height);\n\t\t\t\t\tvar nodeWidth = Math.floor(entry[0].contentRect.width);\n\n\t\t\t\t\tif (_this83.containerHeight != nodeHeight || _this83.containerWidth != nodeWidth) {\n\t\t\t\t\t\t_this83.containerHeight = nodeHeight;\n\t\t\t\t\t\t_this83.containerWidth = nodeWidth;\n\t\t\t\t\t\t_this83.tableHeight = table.element.clientHeight;\n\t\t\t\t\t\t_this83.tableWidth = table.element.clientWidth;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (table.options.virtualDomHoz) {\n\t\t\t\t\t\ttable.vdomHoz.reinitialize(true);\n\t\t\t\t\t}\n\n\t\t\t\t\ttable.redraw();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.containerObserver.observe(this.table.element.parentNode);\n\t\t}\n\t} else {\n\t\tthis.binding = function () {\n\t\t\tif (!table.browserMobile || table.browserMobile && !table.modules.edit.currentCell) {\n\t\t\t\tif (table.options.virtualDomHoz) {\n\t\t\t\t\ttable.vdomHoz.reinitialize(true);\n\t\t\t\t}\n\n\t\t\t\ttable.redraw();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"resize\", this.binding);\n\t}\n};\n\nResizeTable.prototype.clearBindings = function (row) {\n\tif (this.binding) {\n\t\twindow.removeEventListener(\"resize\", this.binding);\n\t}\n\n\tif (this.observer) {\n\t\tthis.observer.unobserve(this.table.element);\n\t}\n\n\tif (this.containerObserver) {\n\t\tthis.containerObserver.unobserve(this.table.element.parentNode);\n\t}\n};\n\nTabulator.prototype.registerModule(\"resizeTable\", ResizeTable);\nvar ResponsiveLayout = function ResponsiveLayout(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.columns = [];\n\tthis.hiddenColumns = [];\n\tthis.mode = \"\";\n\tthis.index = 0;\n\tthis.collapseFormatter = [];\n\tthis.collapseStartOpen = true;\n\tthis.collapseHandleColumn = false;\n};\n\n//generate resposive columns list\nResponsiveLayout.prototype.initialize = function () {\n\tvar self = this,\n\t columns = [];\n\n\tthis.mode = this.table.options.responsiveLayout;\n\tthis.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;\n\tthis.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;\n\tthis.hiddenColumns = [];\n\n\t//detemine level of responsivity for each column\n\tthis.table.columnManager.columnsByIndex.forEach(function (column, i) {\n\t\tif (column.modules.responsive) {\n\t\t\tif (column.modules.responsive.order && column.modules.responsive.visible) {\n\t\t\t\tcolumn.modules.responsive.index = i;\n\t\t\t\tcolumns.push(column);\n\n\t\t\t\tif (!column.visible && self.mode === \"collapse\") {\n\t\t\t\t\tself.hiddenColumns.push(column);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t//sort list by responsivity\n\tcolumns = columns.reverse();\n\tcolumns = columns.sort(function (a, b) {\n\t\tvar diff = b.modules.responsive.order - a.modules.responsive.order;\n\t\treturn diff || b.modules.responsive.index - a.modules.responsive.index;\n\t});\n\n\tthis.columns = columns;\n\n\tif (this.mode === \"collapse\") {\n\t\tthis.generateCollapsedContent();\n\t}\n\n\t//assign collapse column\n\tfor (var _iterator = this.table.columnManager.columnsByIndex, _isArray = Array.isArray(_iterator), _i17 = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i17 >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i17++];\n\t\t} else {\n\t\t\t_i17 = _iterator.next();\n\t\t\tif (_i17.done) break;\n\t\t\t_ref = _i17.value;\n\t\t}\n\n\t\tvar col = _ref;\n\n\t\tif (col.definition.formatter == \"responsiveCollapse\") {\n\t\t\tthis.collapseHandleColumn = col;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (this.collapseHandleColumn) {\n\t\tif (this.hiddenColumns.length) {\n\t\t\tthis.collapseHandleColumn.show();\n\t\t} else {\n\t\t\tthis.collapseHandleColumn.hide();\n\t\t}\n\t}\n};\n\n//define layout information\nResponsiveLayout.prototype.initializeColumn = function (column) {\n\tvar def = column.getDefinition();\n\n\tcolumn.modules.responsive = { order: typeof def.responsive === \"undefined\" ? 1 : def.responsive, visible: def.visible === false ? false : true };\n};\n\nResponsiveLayout.prototype.initializeRow = function (row) {\n\tvar el;\n\n\tif (row.type !== \"calc\") {\n\t\tel = document.createElement(\"div\");\n\t\tel.classList.add(\"tabulator-responsive-collapse\");\n\n\t\trow.modules.responsiveLayout = {\n\t\t\telement: el,\n\t\t\topen: this.collapseStartOpen\n\t\t};\n\n\t\tif (!this.collapseStartOpen) {\n\t\t\tel.style.display = 'none';\n\t\t}\n\t}\n};\n\nResponsiveLayout.prototype.layoutRow = function (row) {\n\tvar rowEl = row.getElement();\n\n\tif (row.modules.responsiveLayout) {\n\t\trowEl.appendChild(row.modules.responsiveLayout.element);\n\t\tthis.generateCollapsedRowContent(row);\n\t}\n};\n\n//update column visibility\nResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {\n\tvar index;\n\tif (column.modules.responsive) {\n\t\tcolumn.modules.responsive.visible = visible;\n\t\tthis.initialize();\n\t}\n};\n\nResponsiveLayout.prototype.hideColumn = function (column) {\n\tvar colCount = this.hiddenColumns.length;\n\n\tcolumn.hide(false, true);\n\n\tif (this.mode === \"collapse\") {\n\t\tthis.hiddenColumns.unshift(column);\n\t\tthis.generateCollapsedContent();\n\n\t\tif (this.collapseHandleColumn && !colCount) {\n\t\t\tthis.collapseHandleColumn.show();\n\t\t}\n\t}\n};\n\nResponsiveLayout.prototype.showColumn = function (column) {\n\tvar index;\n\n\tcolumn.show(false, true);\n\t//set column width to prevent calculation loops on uninitialized columns\n\tcolumn.setWidth(column.getWidth());\n\n\tif (this.mode === \"collapse\") {\n\t\tindex = this.hiddenColumns.indexOf(column);\n\n\t\tif (index > -1) {\n\t\t\tthis.hiddenColumns.splice(index, 1);\n\t\t}\n\n\t\tthis.generateCollapsedContent();\n\n\t\tif (this.collapseHandleColumn && !this.hiddenColumns.length) {\n\t\t\tthis.collapseHandleColumn.hide();\n\t\t}\n\t}\n};\n\n//redraw columns to fit space\nResponsiveLayout.prototype.update = function () {\n\tvar self = this,\n\t working = true;\n\n\twhile (working) {\n\n\t\tvar width = self.table.modules.layout.getMode() == \"fitColumns\" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();\n\n\t\tvar diff = (self.table.options.headerVisible ? self.table.columnManager.element.clientWidth : self.table.element.clientWidth) - width;\n\n\t\tif (diff < 0) {\n\t\t\t//table is too wide\n\t\t\tvar column = self.columns[self.index];\n\n\t\t\tif (column) {\n\t\t\t\tself.hideColumn(column);\n\t\t\t\tself.index++;\n\t\t\t} else {\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t} else {\n\n\t\t\t//table has spare space\n\t\t\tvar _column = self.columns[self.index - 1];\n\n\t\t\tif (_column) {\n\t\t\t\tif (diff > 0) {\n\t\t\t\t\tif (diff >= _column.getWidth()) {\n\t\t\t\t\t\tself.showColumn(_column);\n\t\t\t\t\t\tself.index--;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tworking = false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tworking = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tworking = false;\n\t\t\t}\n\t\t}\n\n\t\tif (!self.table.rowManager.activeRowsCount) {\n\t\t\tself.table.rowManager.renderEmptyScroll();\n\t\t}\n\t}\n};\n\nResponsiveLayout.prototype.generateCollapsedContent = function () {\n\tvar self = this,\n\t rows = this.table.rowManager.getDisplayRows();\n\n\trows.forEach(function (row) {\n\t\tself.generateCollapsedRowContent(row);\n\t});\n};\n\nResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {\n\tvar el, contents;\n\n\tif (row.modules.responsiveLayout) {\n\t\tel = row.modules.responsiveLayout.element;\n\n\t\twhile (el.firstChild) {\n\t\t\tel.removeChild(el.firstChild);\n\t\t}contents = this.collapseFormatter(this.generateCollapsedRowData(row));\n\t\tif (contents) {\n\t\t\tel.appendChild(contents);\n\t\t}\n\t}\n};\n\nResponsiveLayout.prototype.generateCollapsedRowData = function (row) {\n\tvar self = this,\n\t data = row.getData(),\n\t output = [],\n\t mockCellComponent;\n\n\tthis.hiddenColumns.forEach(function (column) {\n\t\tvar value = column.getFieldValue(data);\n\n\t\tif (column.definition.title && column.field) {\n\t\t\tif (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {\n\n\t\t\t\tmockCellComponent = {\n\t\t\t\t\tvalue: false,\n\t\t\t\t\tdata: {},\n\t\t\t\t\tgetValue: function getValue() {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t},\n\t\t\t\t\tgetData: function getData() {\n\t\t\t\t\t\treturn data;\n\t\t\t\t\t},\n\t\t\t\t\tgetElement: function getElement() {\n\t\t\t\t\t\treturn document.createElement(\"div\");\n\t\t\t\t\t},\n\t\t\t\t\tgetRow: function getRow() {\n\t\t\t\t\t\treturn row.getComponent();\n\t\t\t\t\t},\n\t\t\t\t\tgetColumn: function getColumn() {\n\t\t\t\t\t\treturn column.getComponent();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\toutput.push({\n\t\t\t\t\tfield: column.field,\n\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\tvalue: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\toutput.push({\n\t\t\t\t\tfield: column.field,\n\t\t\t\t\ttitle: column.definition.title,\n\t\t\t\t\tvalue: value\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\treturn output;\n};\n\nResponsiveLayout.prototype.formatCollapsedData = function (data) {\n\tvar list = document.createElement(\"table\");\n\n\tdata.forEach(function (item) {\n\t\tvar row = document.createElement(\"tr\");\n\t\tvar titleData = document.createElement(\"td\");\n\t\tvar valueData = document.createElement(\"td\");\n\t\tvar node_content;\n\n\t\tvar titleHighlight = document.createElement(\"strong\");\n\t\ttitleData.appendChild(titleHighlight);\n\t\tthis.table.modules.localize.bind(\"columns|\" + item.field, function (text) {\n\t\t\ttitleHighlight.innerText = text || item.title;\n\t\t});\n\n\t\tif (item.value instanceof Node) {\n\t\t\tnode_content = document.createElement(\"div\");\n\t\t\tnode_content.appendChild(item.value);\n\t\t\tvalueData.appendChild(node_content);\n\t\t} else {\n\t\t\tvalueData.innerHTML = item.value;\n\t\t}\n\n\t\trow.appendChild(titleData);\n\t\trow.appendChild(valueData);\n\t\tlist.appendChild(row);\n\t}, this);\n\n\treturn Object.keys(data).length ? list : \"\";\n};\n\nTabulator.prototype.registerModule(\"responsiveLayout\", ResponsiveLayout);\n\nvar SelectRow = function SelectRow(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.selecting = false; //flag selecting in progress\n\tthis.lastClickedRow = false; //last clicked row\n\tthis.selectPrev = []; //hold previously selected element for drag drop selection\n\tthis.selectedRows = []; //hold selected rows\n\tthis.headerCheckboxElement = null; // hold header select element\n};\n\nSelectRow.prototype.clearSelectionData = function (silent) {\n\tthis.selecting = false;\n\tthis.lastClickedRow = false;\n\tthis.selectPrev = [];\n\tthis.selectedRows = [];\n\n\tif (!silent) {\n\t\tthis._rowSelectionChanged();\n\t}\n};\n\nSelectRow.prototype.initializeRow = function (row) {\n\tvar self = this,\n\t element = row.getElement();\n\n\t// trigger end of row selection\n\tvar endSelect = function endSelect() {\n\n\t\tsetTimeout(function () {\n\t\t\tself.selecting = false;\n\t\t}, 50);\n\n\t\tdocument.body.removeEventListener(\"mouseup\", endSelect);\n\t};\n\n\trow.modules.select = { selected: false };\n\n\t//set row selection class\n\tif (self.table.options.selectableCheck.call(this.table, row.getComponent())) {\n\t\telement.classList.add(\"tabulator-selectable\");\n\t\telement.classList.remove(\"tabulator-unselectable\");\n\n\t\tif (self.table.options.selectable && self.table.options.selectable != \"highlight\") {\n\t\t\tif (self.table.options.selectableRangeMode === \"click\") {\n\t\t\t\telement.addEventListener(\"click\", function (e) {\n\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\tself.lastClickedRow = self.lastClickedRow || row;\n\n\t\t\t\t\t\tvar lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);\n\t\t\t\t\t\tvar rowIdx = self.table.rowManager.getDisplayRowIndex(row);\n\n\t\t\t\t\t\tvar fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;\n\t\t\t\t\t\tvar toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;\n\n\t\t\t\t\t\tvar rows = self.table.rowManager.getDisplayRows().slice(0);\n\t\t\t\t\t\tvar toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);\n\n\t\t\t\t\t\tif (e.ctrlKey || e.metaKey) {\n\t\t\t\t\t\t\ttoggledRows.forEach(function (toggledRow) {\n\t\t\t\t\t\t\t\tif (toggledRow !== self.lastClickedRow) {\n\n\t\t\t\t\t\t\t\t\tif (self.table.options.selectable !== true && !self.isRowSelected(row)) {\n\t\t\t\t\t\t\t\t\t\tif (self.selectedRows.length < self.table.options.selectable) {\n\t\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tself.toggleRow(toggledRow);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.deselectRows(undefined, true);\n\n\t\t\t\t\t\t\tif (self.table.options.selectable !== true) {\n\t\t\t\t\t\t\t\tif (toggledRows.length > self.table.options.selectable) {\n\t\t\t\t\t\t\t\t\ttoggledRows = toggledRows.slice(0, self.table.options.selectable);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tself.selectRows(toggledRows);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t} else if (e.ctrlKey || e.metaKey) {\n\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.deselectRows(undefined, true);\n\t\t\t\t\t\tself.selectRows(row);\n\t\t\t\t\t\tself.lastClickedRow = row;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\telement.addEventListener(\"click\", function (e) {\n\t\t\t\t\tif (!self.table.modExists(\"edit\") || !self.table.modules.edit.getCurrentCell()) {\n\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!self.selecting) {\n\t\t\t\t\t\tself.toggleRow(row);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\telement.addEventListener(\"mousedown\", function (e) {\n\t\t\t\t\tif (e.shiftKey) {\n\t\t\t\t\t\tself.table._clearSelection();\n\n\t\t\t\t\t\tself.selecting = true;\n\n\t\t\t\t\t\tself.selectPrev = [];\n\n\t\t\t\t\t\tdocument.body.addEventListener(\"mouseup\", endSelect);\n\t\t\t\t\t\tdocument.body.addEventListener(\"keyup\", endSelect);\n\n\t\t\t\t\t\tself.toggleRow(row);\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\telement.addEventListener(\"mouseenter\", function (e) {\n\t\t\t\t\tif (self.selecting) {\n\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\tself.toggleRow(row);\n\n\t\t\t\t\t\tif (self.selectPrev[1] == row) {\n\t\t\t\t\t\t\tself.toggleRow(self.selectPrev[0]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\telement.addEventListener(\"mouseout\", function (e) {\n\t\t\t\t\tif (self.selecting) {\n\t\t\t\t\t\tself.table._clearSelection();\n\t\t\t\t\t\tself.selectPrev.unshift(row);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t} else {\n\t\telement.classList.add(\"tabulator-unselectable\");\n\t\telement.classList.remove(\"tabulator-selectable\");\n\t}\n};\n\n//toggle row selection\nSelectRow.prototype.toggleRow = function (row) {\n\tif (this.table.options.selectableCheck.call(this.table, row.getComponent())) {\n\t\tif (row.modules.select && row.modules.select.selected) {\n\t\t\tthis._deselectRow(row);\n\t\t} else {\n\t\t\tthis._selectRow(row);\n\t\t}\n\t}\n};\n\n//select a number of rows\nSelectRow.prototype.selectRows = function (rows) {\n\tvar _this84 = this;\n\n\tvar rowMatch;\n\n\tswitch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {\n\t\tcase \"undefined\":\n\t\t\tthis.table.rowManager.rows.forEach(function (row) {\n\t\t\t\t_this84._selectRow(row, true, true);\n\t\t\t});\n\n\t\t\tthis._rowSelectionChanged();\n\t\t\tbreak;\n\n\t\tcase \"string\":\n\n\t\t\trowMatch = this.table.rowManager.findRow(rows);\n\n\t\t\tif (rowMatch) {\n\t\t\t\tthis._selectRow(rowMatch, true, true);\n\t\t\t} else {\n\t\t\t\tthis.table.rowManager.getRows(rows).forEach(function (row) {\n\t\t\t\t\t_this84._selectRow(row, true, true);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis._rowSelectionChanged();\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tif (Array.isArray(rows)) {\n\t\t\t\trows.forEach(function (row) {\n\t\t\t\t\t_this84._selectRow(row, true, true);\n\t\t\t\t});\n\n\t\t\t\tthis._rowSelectionChanged();\n\t\t\t} else {\n\t\t\t\tthis._selectRow(rows, false, true);\n\t\t\t}\n\t\t\tbreak;\n\t}\n};\n\n//select an individual row\nSelectRow.prototype._selectRow = function (rowInfo, silent, force) {\n\tvar index;\n\n\t//handle max row count\n\tif (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {\n\t\tif (this.selectedRows.length >= this.table.options.selectable) {\n\t\t\tif (this.table.options.selectableRollingSelection) {\n\t\t\t\tthis._deselectRow(this.selectedRows[0]);\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar row = this.table.rowManager.findRow(rowInfo);\n\n\tif (row) {\n\t\tif (this.selectedRows.indexOf(row) == -1) {\n\t\t\trow.getElement().classList.add(\"tabulator-selected\");\n\t\t\tif (!row.modules.select) {\n\t\t\t\trow.modules.select = {};\n\t\t\t}\n\n\t\t\trow.modules.select.selected = true;\n\t\t\tif (row.modules.select.checkboxEl) {\n\t\t\t\trow.modules.select.checkboxEl.checked = true;\n\t\t\t}\n\n\t\t\tthis.selectedRows.push(row);\n\n\t\t\tif (this.table.options.dataTreeSelectPropagate) {\n\t\t\t\tthis.childRowSelection(row, true);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\t\t\t\tthis.table.options.rowSelected.call(this.table, row.getComponent());\n\t\t\t}\n\n\t\t\tthis._rowSelectionChanged(silent);\n\t\t}\n\t} else {\n\t\tif (!silent) {\n\t\t\tconsole.warn(\"Selection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t}\n\t}\n};\n\nSelectRow.prototype.isRowSelected = function (row) {\n\treturn this.selectedRows.indexOf(row) !== -1;\n};\n\n//deselect a number of rows\nSelectRow.prototype.deselectRows = function (rows, silent) {\n\tvar self = this,\n\t rowCount;\n\n\tif (typeof rows == \"undefined\") {\n\n\t\trowCount = self.selectedRows.length;\n\n\t\tfor (var _i18 = 0; _i18 < rowCount; _i18++) {\n\t\t\tself._deselectRow(self.selectedRows[0], true);\n\t\t}\n\n\t\tself._rowSelectionChanged(silent);\n\t} else {\n\t\tif (Array.isArray(rows)) {\n\t\t\trows.forEach(function (row) {\n\t\t\t\tself._deselectRow(row, true);\n\t\t\t});\n\n\t\t\tself._rowSelectionChanged(silent);\n\t\t} else {\n\t\t\tself._deselectRow(rows, silent);\n\t\t}\n\t}\n};\n\n//deselect an individual row\nSelectRow.prototype._deselectRow = function (rowInfo, silent) {\n\tvar self = this,\n\t row = self.table.rowManager.findRow(rowInfo),\n\t index;\n\n\tif (row) {\n\t\tindex = self.selectedRows.findIndex(function (selectedRow) {\n\t\t\treturn selectedRow == row;\n\t\t});\n\n\t\tif (index > -1) {\n\n\t\t\trow.getElement().classList.remove(\"tabulator-selected\");\n\t\t\tif (!row.modules.select) {\n\t\t\t\trow.modules.select = {};\n\t\t\t}\n\n\t\t\trow.modules.select.selected = false;\n\t\t\tif (row.modules.select.checkboxEl) {\n\t\t\t\trow.modules.select.checkboxEl.checked = false;\n\t\t\t}\n\t\t\tself.selectedRows.splice(index, 1);\n\n\t\t\tif (this.table.options.dataTreeSelectPropagate) {\n\t\t\t\tthis.childRowSelection(row, false);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\t\t\t\tself.table.options.rowDeselected.call(this.table, row.getComponent());\n\t\t\t}\n\n\t\t\tself._rowSelectionChanged(silent);\n\t\t}\n\t} else {\n\t\tif (!silent) {\n\t\t\tconsole.warn(\"Deselection Error - No such row found, ignoring selection:\" + rowInfo);\n\t\t}\n\t}\n};\n\nSelectRow.prototype.getSelectedData = function () {\n\tvar data = [];\n\n\tthis.selectedRows.forEach(function (row) {\n\t\tdata.push(row.getData());\n\t});\n\n\treturn data;\n};\n\nSelectRow.prototype.getSelectedRows = function () {\n\n\tvar rows = [];\n\n\tthis.selectedRows.forEach(function (row) {\n\t\trows.push(row.getComponent());\n\t});\n\n\treturn rows;\n};\n\nSelectRow.prototype._rowSelectionChanged = function (silent) {\n\tif (this.headerCheckboxElement) {\n\t\tif (this.selectedRows.length === 0) {\n\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t} else if (this.table.rowManager.rows.length === this.selectedRows.length) {\n\t\t\tthis.headerCheckboxElement.checked = true;\n\t\t\tthis.headerCheckboxElement.indeterminate = false;\n\t\t} else {\n\t\t\tthis.headerCheckboxElement.indeterminate = true;\n\t\t\tthis.headerCheckboxElement.checked = false;\n\t\t}\n\t}\n\n\tif (!silent) {\n\t\tthis.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());\n\t}\n};\n\nSelectRow.prototype.registerRowSelectCheckbox = function (row, element) {\n\tif (!row._row.modules.select) {\n\t\trow._row.modules.select = {};\n\t}\n\n\trow._row.modules.select.checkboxEl = element;\n};\n\nSelectRow.prototype.registerHeaderSelectCheckbox = function (element) {\n\tthis.headerCheckboxElement = element;\n};\n\nSelectRow.prototype.childRowSelection = function (row, select) {\n\tvar children = this.table.modules.dataTree.getChildren(row, true);\n\n\tif (select) {\n\t\tfor (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i19 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n\t\t\tvar _ref2;\n\n\t\t\tif (_isArray2) {\n\t\t\t\tif (_i19 >= _iterator2.length) break;\n\t\t\t\t_ref2 = _iterator2[_i19++];\n\t\t\t} else {\n\t\t\t\t_i19 = _iterator2.next();\n\t\t\t\tif (_i19.done) break;\n\t\t\t\t_ref2 = _i19.value;\n\t\t\t}\n\n\t\t\tvar child = _ref2;\n\n\t\t\tthis._selectRow(child, true);\n\t\t}\n\t} else {\n\t\tfor (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i20 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n\t\t\tvar _ref3;\n\n\t\t\tif (_isArray3) {\n\t\t\t\tif (_i20 >= _iterator3.length) break;\n\t\t\t\t_ref3 = _iterator3[_i20++];\n\t\t\t} else {\n\t\t\t\t_i20 = _iterator3.next();\n\t\t\t\tif (_i20.done) break;\n\t\t\t\t_ref3 = _i20.value;\n\t\t\t}\n\n\t\t\tvar _child = _ref3;\n\n\t\t\tthis._deselectRow(_child, true);\n\t\t}\n\t}\n};\n\nTabulator.prototype.registerModule(\"selectRow\", SelectRow);\n\nvar Sort = function Sort(table) {\n\tthis.table = table; //hold Tabulator object\n\tthis.sortList = []; //holder current sort\n\tthis.changed = false; //has the sort changed since last render\n};\n\n//initialize column header for sorting\nSort.prototype.initializeColumn = function (column, content) {\n\tvar self = this,\n\t sorter = false,\n\t colEl,\n\t arrowEl;\n\n\tswitch (_typeof(column.definition.sorter)) {\n\t\tcase \"string\":\n\t\t\tif (self.sorters[column.definition.sorter]) {\n\t\t\t\tsorter = self.sorters[column.definition.sorter];\n\t\t\t} else {\n\t\t\t\tconsole.warn(\"Sort Error - No such sorter found: \", column.definition.sorter);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\tsorter = column.definition.sorter;\n\t\t\tbreak;\n\t}\n\n\tcolumn.modules.sort = {\n\t\tsorter: sorter, dir: \"none\",\n\t\tparams: column.definition.sorterParams || {},\n\t\tstartingDir: column.definition.headerSortStartingDir || \"asc\",\n\t\ttristate: typeof column.definition.headerSortTristate !== \"undefined\" ? column.definition.headerSortTristate : this.table.options.headerSortTristate\n\t};\n\n\tif (typeof column.definition.headerSort === \"undefined\" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {\n\n\t\tcolEl = column.getElement();\n\n\t\tcolEl.classList.add(\"tabulator-sortable\");\n\n\t\tarrowEl = document.createElement(\"div\");\n\t\tarrowEl.classList.add(\"tabulator-col-sorter\");\n\n\t\tif (_typeof(this.table.options.headerSortElement) == \"object\") {\n\t\t\tarrowEl.appendChild(this.table.options.headerSortElement);\n\t\t} else {\n\t\t\tarrowEl.innerHTML = this.table.options.headerSortElement;\n\t\t}\n\n\t\t//create sorter arrow\n\t\tcontent.appendChild(arrowEl);\n\n\t\tcolumn.modules.sort.element = arrowEl;\n\n\t\t//sort on click\n\t\tcolEl.addEventListener(\"click\", function (e) {\n\t\t\tvar dir = \"\",\n\t\t\t sorters = [],\n\t\t\t match = false;\n\n\t\t\tif (column.modules.sort) {\n\t\t\t\tif (column.modules.sort.tristate) {\n\t\t\t\t\tif (column.modules.sort.dir == \"none\") {\n\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (column.modules.sort.dir == column.modules.sort.startingDir) {\n\t\t\t\t\t\t\tdir = column.modules.sort.dir == \"asc\" ? \"desc\" : \"asc\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdir = \"none\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch (column.modules.sort.dir) {\n\t\t\t\t\t\tcase \"asc\":\n\t\t\t\t\t\t\tdir = \"desc\";\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase \"desc\":\n\t\t\t\t\t\t\tdir = \"asc\";\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tdir = column.modules.sort.startingDir;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {\n\t\t\t\t\tsorters = self.getSort();\n\n\t\t\t\t\tmatch = sorters.findIndex(function (sorter) {\n\t\t\t\t\t\treturn sorter.field === column.getField();\n\t\t\t\t\t});\n\n\t\t\t\t\tif (match > -1) {\n\t\t\t\t\t\tsorters[match].dir = dir;\n\n\t\t\t\t\t\tif (match != sorters.length - 1) {\n\t\t\t\t\t\t\tmatch = sorters.splice(match, 1)[0];\n\t\t\t\t\t\t\tif (dir != \"none\") {\n\t\t\t\t\t\t\t\tsorters.push(match);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (dir != \"none\") {\n\t\t\t\t\t\t\tsorters.push({ column: column, dir: dir });\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t//add to existing sort\n\t\t\t\t\tself.setSort(sorters);\n\t\t\t\t} else {\n\t\t\t\t\tif (dir == \"none\") {\n\t\t\t\t\t\tself.clear();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//sort by column only\n\t\t\t\t\t\tself.setSort(column, dir);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tself.table.rowManager.sorterRefresh(!self.sortList.length);\n\t\t\t}\n\t\t});\n\t}\n};\n\n//check if the sorters have changed since last use\nSort.prototype.hasChanged = function () {\n\tvar changed = this.changed;\n\tthis.changed = false;\n\treturn changed;\n};\n\n//return current sorters\nSort.prototype.getSort = function () {\n\tvar self = this,\n\t sorters = [];\n\n\tself.sortList.forEach(function (item) {\n\t\tif (item.column) {\n\t\t\tsorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });\n\t\t}\n\t});\n\n\treturn sorters;\n};\n\n//change sort list and trigger sort\nSort.prototype.setSort = function (sortList, dir) {\n\tvar self = this,\n\t newSortList = [];\n\n\tif (!Array.isArray(sortList)) {\n\t\tsortList = [{ column: sortList, dir: dir }];\n\t}\n\n\tsortList.forEach(function (item) {\n\t\tvar column;\n\n\t\tcolumn = self.table.columnManager.findColumn(item.column);\n\n\t\tif (column) {\n\t\t\titem.column = column;\n\t\t\tnewSortList.push(item);\n\t\t\tself.changed = true;\n\t\t} else {\n\t\t\tconsole.warn(\"Sort Warning - Sort field does not exist and is being ignored: \", item.column);\n\t\t}\n\t});\n\n\tself.sortList = newSortList;\n\n\tif (this.table.options.persistence && this.table.modExists(\"persistence\", true) && this.table.modules.persistence.config.sort) {\n\t\tthis.table.modules.persistence.save(\"sort\");\n\t}\n};\n\n//clear sorters\nSort.prototype.clear = function () {\n\tthis.setSort([]);\n};\n\n//find appropriate sorter for column\nSort.prototype.findSorter = function (column) {\n\tvar row = this.table.rowManager.activeRows[0],\n\t sorter = \"string\",\n\t field,\n\t value;\n\n\tif (row) {\n\t\trow = row.getData();\n\t\tfield = column.getField();\n\n\t\tif (field) {\n\n\t\t\tvalue = column.getFieldValue(row);\n\n\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\tcase \"undefined\":\n\t\t\t\t\tsorter = \"string\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tsorter = \"boolean\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif (!isNaN(value) && value !== \"\") {\n\t\t\t\t\t\tsorter = \"number\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {\n\t\t\t\t\t\t\tsorter = \"alphanum\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn this.sorters[sorter];\n};\n\n//work through sort list sorting data\nSort.prototype.sort = function (data) {\n\tvar self = this,\n\t sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList,\n\t sortListActual = [],\n\t rowComponents = [],\n\t lastSort;\n\n\tif (self.table.options.dataSorting) {\n\t\tself.table.options.dataSorting.call(self.table, self.getSort());\n\t}\n\n\tself.clearColumnHeaders();\n\n\tif (!self.table.options.ajaxSorting) {\n\n\t\t//build list of valid sorters and trigger column specific callbacks before sort begins\n\t\tsortList.forEach(function (item, i) {\n\t\t\tvar sortObj = item.column.modules.sort;\n\n\t\t\tif (item.column && sortObj) {\n\n\t\t\t\t//if no sorter has been defined, take a guess\n\t\t\t\tif (!sortObj.sorter) {\n\t\t\t\t\tsortObj.sorter = self.findSorter(item.column);\n\t\t\t\t}\n\n\t\t\t\titem.params = typeof sortObj.params === \"function\" ? sortObj.params(item.column.getComponent(), item.dir) : sortObj.params;\n\n\t\t\t\tsortListActual.push(item);\n\t\t\t}\n\n\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t});\n\n\t\t//sort data\n\t\tif (sortListActual.length) {\n\t\t\tself._sortItems(data, sortListActual);\n\t\t}\n\t} else {\n\t\tsortList.forEach(function (item, i) {\n\t\t\tself.setColumnHeader(item.column, item.dir);\n\t\t});\n\t}\n\n\tif (self.table.options.dataSorted) {\n\t\tdata.forEach(function (row) {\n\t\t\trowComponents.push(row.getComponent());\n\t\t});\n\n\t\tself.table.options.dataSorted.call(self.table, self.getSort(), rowComponents);\n\t}\n};\n\n//clear sort arrows on columns\nSort.prototype.clearColumnHeaders = function () {\n\tthis.table.columnManager.getRealColumns().forEach(function (column) {\n\t\tif (column.modules.sort) {\n\t\t\tcolumn.modules.sort.dir = \"none\";\n\t\t\tcolumn.getElement().setAttribute(\"aria-sort\", \"none\");\n\t\t}\n\t});\n};\n\n//set the column header sort direction\nSort.prototype.setColumnHeader = function (column, dir) {\n\tcolumn.modules.sort.dir = dir;\n\tcolumn.getElement().setAttribute(\"aria-sort\", dir);\n};\n\n//sort each item in sort list\nSort.prototype._sortItems = function (data, sortList) {\n\tvar _this85 = this;\n\n\tvar sorterCount = sortList.length - 1;\n\n\tdata.sort(function (a, b) {\n\t\tvar result;\n\n\t\tfor (var i = sorterCount; i >= 0; i--) {\n\t\t\tvar sortItem = sortList[i];\n\n\t\t\tresult = _this85._sortRow(a, b, sortItem.column, sortItem.dir, sortItem.params);\n\n\t\t\tif (result !== 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t});\n};\n\n//process individual rows for a sort function on active data\nSort.prototype._sortRow = function (a, b, column, dir, params) {\n\tvar el1Comp, el2Comp, colComp;\n\n\t//switch elements depending on search direction\n\tvar el1 = dir == \"asc\" ? a : b;\n\tvar el2 = dir == \"asc\" ? b : a;\n\n\ta = column.getFieldValue(el1.getData());\n\tb = column.getFieldValue(el2.getData());\n\n\ta = typeof a !== \"undefined\" ? a : \"\";\n\tb = typeof b !== \"undefined\" ? b : \"\";\n\n\tel1Comp = el1.getComponent();\n\tel2Comp = el2.getComponent();\n\n\treturn column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);\n};\n\n//default data sorters\nSort.prototype.sorters = {\n\n\t//sort numbers\n\tnumber: function number(a, b, aRow, bRow, column, dir, params) {\n\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\tvar decimal = params.decimalSeparator;\n\t\tvar thousand = params.thousandSeparator;\n\t\tvar emptyAlign = 0;\n\n\t\ta = String(a);\n\t\tb = String(b);\n\n\t\tif (thousand) {\n\t\t\ta = a.split(thousand).join(\"\");\n\t\t\tb = b.split(thousand).join(\"\");\n\t\t}\n\n\t\tif (decimal) {\n\t\t\ta = a.split(decimal).join(\".\");\n\t\t\tb = b.split(decimal).join(\".\");\n\t\t}\n\n\t\ta = parseFloat(a);\n\t\tb = parseFloat(b);\n\n\t\t//handle non numeric values\n\t\tif (isNaN(a)) {\n\t\t\temptyAlign = isNaN(b) ? 0 : -1;\n\t\t} else if (isNaN(b)) {\n\t\t\temptyAlign = 1;\n\t\t} else {\n\t\t\t//compare valid values\n\t\t\treturn a - b;\n\t\t}\n\n\t\t//fix empty values in position\n\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\temptyAlign *= -1;\n\t\t}\n\n\t\treturn emptyAlign;\n\t},\n\n\t//sort strings\n\tstring: function string(a, b, aRow, bRow, column, dir, params) {\n\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\tvar emptyAlign = 0;\n\t\tvar locale;\n\n\t\t//handle empty values\n\t\tif (!a) {\n\t\t\temptyAlign = !b ? 0 : -1;\n\t\t} else if (!b) {\n\t\t\temptyAlign = 1;\n\t\t} else {\n\t\t\t//compare valid values\n\t\t\tswitch (_typeof(params.locale)) {\n\t\t\t\tcase \"boolean\":\n\t\t\t\t\tif (params.locale) {\n\t\t\t\t\t\tlocale = this.table.modules.localize.getLocale();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"string\":\n\t\t\t\t\tlocale = params.locale;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);\n\t\t}\n\n\t\t//fix empty values in position\n\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\temptyAlign *= -1;\n\t\t}\n\n\t\treturn emptyAlign;\n\t},\n\n\t//sort date\n\tdate: function date(a, b, aRow, bRow, column, dir, params) {\n\t\tif (!params.format) {\n\t\t\tparams.format = \"DD/MM/YYYY\";\n\t\t}\n\n\t\treturn this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);\n\t},\n\n\t//sort HH:mm formatted times\n\ttime: function time(a, b, aRow, bRow, column, dir, params) {\n\t\tif (!params.format) {\n\t\t\tparams.format = \"HH:mm\";\n\t\t}\n\n\t\treturn this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);\n\t},\n\n\t//sort datetime\n\tdatetime: function datetime(a, b, aRow, bRow, column, dir, params) {\n\t\tvar format = params.format || \"DD/MM/YYYY HH:mm:ss\",\n\t\t alignEmptyValues = params.alignEmptyValues,\n\t\t emptyAlign = 0;\n\n\t\tif (typeof moment != \"undefined\") {\n\t\t\ta = moment(a, format);\n\t\t\tb = moment(b, format);\n\n\t\t\tif (!a.isValid()) {\n\t\t\t\temptyAlign = !b.isValid() ? 0 : -1;\n\t\t\t} else if (!b.isValid()) {\n\t\t\t\temptyAlign = 1;\n\t\t\t} else {\n\t\t\t\t//compare valid values\n\t\t\t\treturn a - b;\n\t\t\t}\n\n\t\t\t//fix empty values in position\n\t\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\t\temptyAlign *= -1;\n\t\t\t}\n\n\t\t\treturn emptyAlign;\n\t\t} else {\n\t\t\tconsole.error(\"Sort Error - 'datetime' sorter is dependant on moment.js\");\n\t\t}\n\t},\n\n\t//sort booleans\n\tboolean: function boolean(a, b, aRow, bRow, column, dir, params) {\n\t\tvar el1 = a === true || a === \"true\" || a === \"True\" || a === 1 ? 1 : 0;\n\t\tvar el2 = b === true || b === \"true\" || b === \"True\" || b === 1 ? 1 : 0;\n\n\t\treturn el1 - el2;\n\t},\n\n\t//sort if element contains any data\n\tarray: function array(a, b, aRow, bRow, column, dir, params) {\n\t\tvar el1 = 0;\n\t\tvar el2 = 0;\n\t\tvar type = params.type || \"length\";\n\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\tvar emptyAlign = 0;\n\n\t\tfunction calc(value) {\n\n\t\t\tswitch (type) {\n\t\t\t\tcase \"length\":\n\t\t\t\t\treturn value.length;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"sum\":\n\t\t\t\t\treturn value.reduce(function (c, d) {\n\t\t\t\t\t\treturn c + d;\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"max\":\n\t\t\t\t\treturn Math.max.apply(null, value);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"min\":\n\t\t\t\t\treturn Math.min.apply(null, value);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase \"avg\":\n\t\t\t\t\treturn value.reduce(function (c, d) {\n\t\t\t\t\t\treturn c + d;\n\t\t\t\t\t}) / value.length;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//handle non array values\n\t\tif (!Array.isArray(a)) {\n\t\t\talignEmptyValues = !Array.isArray(b) ? 0 : -1;\n\t\t} else if (!Array.isArray(b)) {\n\t\t\talignEmptyValues = 1;\n\t\t} else {\n\n\t\t\t//compare valid values\n\t\t\tel1 = a ? calc(a) : 0;\n\t\t\tel2 = b ? calc(b) : 0;\n\n\t\t\treturn el1 - el2;\n\t\t}\n\n\t\t//fix empty values in position\n\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\temptyAlign *= -1;\n\t\t}\n\n\t\treturn emptyAlign;\n\t},\n\n\t//sort if element contains any data\n\texists: function exists(a, b, aRow, bRow, column, dir, params) {\n\t\tvar el1 = typeof a == \"undefined\" ? 0 : 1;\n\t\tvar el2 = typeof b == \"undefined\" ? 0 : 1;\n\n\t\treturn el1 - el2;\n\t},\n\n\t//sort alpha numeric strings\n\talphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {\n\t\tvar a,\n\t\t b,\n\t\t a1,\n\t\t b1,\n\t\t i = 0,\n\t\t L,\n\t\t rx = /(\\d+)|(\\D+)/g,\n\t\t rd = /\\d/;\n\t\tvar alignEmptyValues = params.alignEmptyValues;\n\t\tvar emptyAlign = 0;\n\n\t\t//handle empty values\n\t\tif (!as && as !== 0) {\n\t\t\temptyAlign = !bs && bs !== 0 ? 0 : -1;\n\t\t} else if (!bs && bs !== 0) {\n\t\t\temptyAlign = 1;\n\t\t} else {\n\n\t\t\tif (isFinite(as) && isFinite(bs)) return as - bs;\n\t\t\ta = String(as).toLowerCase();\n\t\t\tb = String(bs).toLowerCase();\n\t\t\tif (a === b) return 0;\n\t\t\tif (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;\n\t\t\ta = a.match(rx);\n\t\t\tb = b.match(rx);\n\t\t\tL = a.length > b.length ? b.length : a.length;\n\t\t\twhile (i < L) {\n\t\t\t\ta1 = a[i];\n\t\t\t\tb1 = b[i++];\n\t\t\t\tif (a1 !== b1) {\n\t\t\t\t\tif (isFinite(a1) && isFinite(b1)) {\n\t\t\t\t\t\tif (a1.charAt(0) === \"0\") a1 = \".\" + a1;\n\t\t\t\t\t\tif (b1.charAt(0) === \"0\") b1 = \".\" + b1;\n\t\t\t\t\t\treturn a1 - b1;\n\t\t\t\t\t} else return a1 > b1 ? 1 : -1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn a.length > b.length;\n\t\t}\n\n\t\t//fix empty values in position\n\t\tif (alignEmptyValues === \"top\" && dir === \"desc\" || alignEmptyValues === \"bottom\" && dir === \"asc\") {\n\t\t\temptyAlign *= -1;\n\t\t}\n\n\t\treturn emptyAlign;\n\t}\n};\n\nTabulator.prototype.registerModule(\"sort\", Sort);\n\nvar Validate = function Validate(table) {\n\tthis.table = table;\n\tthis.invalidCells = [];\n};\n\n//validate\nValidate.prototype.initializeColumn = function (column) {\n\tvar self = this,\n\t config = [],\n\t validator;\n\n\tif (column.definition.validator) {\n\n\t\tif (Array.isArray(column.definition.validator)) {\n\t\t\tcolumn.definition.validator.forEach(function (item) {\n\t\t\t\tvalidator = self._extractValidator(item);\n\n\t\t\t\tif (validator) {\n\t\t\t\t\tconfig.push(validator);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalidator = this._extractValidator(column.definition.validator);\n\n\t\t\tif (validator) {\n\t\t\t\tconfig.push(validator);\n\t\t\t}\n\t\t}\n\n\t\tcolumn.modules.validate = config.length ? config : false;\n\t}\n};\n\nValidate.prototype._extractValidator = function (value) {\n\tvar type, params, pos;\n\n\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\tcase \"string\":\n\t\t\tpos = value.indexOf(':');\n\n\t\t\tif (pos > -1) {\n\t\t\t\ttype = value.substring(0, pos);\n\t\t\t\tparams = value.substring(pos + 1);\n\t\t\t} else {\n\t\t\t\ttype = value;\n\t\t\t}\n\n\t\t\treturn this._buildValidator(type, params);\n\t\t\tbreak;\n\n\t\tcase \"function\":\n\t\t\treturn this._buildValidator(value);\n\t\t\tbreak;\n\n\t\tcase \"object\":\n\t\t\treturn this._buildValidator(value.type, value.parameters);\n\t\t\tbreak;\n\t}\n};\n\nValidate.prototype._buildValidator = function (type, params) {\n\n\tvar func = typeof type == \"function\" ? type : this.validators[type];\n\n\tif (!func) {\n\t\tconsole.warn(\"Validator Setup Error - No matching validator found:\", type);\n\t\treturn false;\n\t} else {\n\t\treturn {\n\t\t\ttype: typeof type == \"function\" ? \"function\" : type,\n\t\t\tfunc: func,\n\t\t\tparams: params\n\t\t};\n\t}\n};\n\nValidate.prototype.validate = function (validators, cell, value) {\n\tvar self = this,\n\t valid = [],\n\t invalidIndex = this.invalidCells.indexOf(cell);\n\n\tif (validators) {\n\t\tvalidators.forEach(function (item) {\n\t\t\tif (!item.func.call(self, cell.getComponent(), value, item.params)) {\n\t\t\t\tvalid.push({\n\t\t\t\t\ttype: item.type,\n\t\t\t\t\tparameters: item.params\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tvalid = valid.length ? valid : true;\n\n\tif (!cell.modules.validate) {\n\t\tcell.modules.validate = {};\n\t}\n\n\tif (valid === true) {\n\t\tcell.modules.validate.invalid = false;\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\n\t\tif (invalidIndex > -1) {\n\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t}\n\t} else {\n\t\tcell.modules.validate.invalid = true;\n\n\t\tif (this.table.options.validationMode !== \"manual\") {\n\t\t\tcell.getElement().classList.add(\"tabulator-validation-fail\");\n\t\t}\n\n\t\tif (invalidIndex == -1) {\n\t\t\tthis.invalidCells.push(cell);\n\t\t}\n\t}\n\n\treturn valid;\n};\n\nValidate.prototype.getInvalidCells = function () {\n\tvar output = [];\n\n\tthis.invalidCells.forEach(function (cell) {\n\t\toutput.push(cell.getComponent());\n\t});\n\n\treturn output;\n};\n\nValidate.prototype.clearValidation = function (cell) {\n\tvar invalidIndex;\n\n\tif (cell.modules.validate && cell.modules.validate.invalid) {\n\n\t\tcell.getElement().classList.remove(\"tabulator-validation-fail\");\n\t\tcell.modules.validate.invalid = false;\n\n\t\tinvalidIndex = this.invalidCells.indexOf(cell);\n\n\t\tif (invalidIndex > -1) {\n\t\t\tthis.invalidCells.splice(invalidIndex, 1);\n\t\t}\n\t}\n};\n\nValidate.prototype.validators = {\n\n\t//is integer\n\tinteger: function integer(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\tvalue = Number(value);\n\t\treturn typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n\t},\n\n\t//is float\n\tfloat: function float(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\tvalue = Number(value);\n\t\treturn typeof value === 'number' && isFinite(value) && value % 1 !== 0;\n\t},\n\n\t//must be a number\n\tnumeric: function numeric(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn !isNaN(value);\n\t},\n\n\t//must be a string\n\tstring: function string(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn isNaN(value);\n\t},\n\n\t//maximum value\n\tmax: function max(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) <= parameters;\n\t},\n\n\t//minimum value\n\tmin: function min(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn parseFloat(value) >= parameters;\n\t},\n\n\t//starts with value\n\tstarts: function starts(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().startsWith(String(parameters).toLowerCase());\n\t},\n\n\t//ends with value\n\tends: function ends(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).toLowerCase().endsWith(String(parameters).toLowerCase());\n\t},\n\n\t//minimum string length\n\tminLength: function minLength(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length >= parameters;\n\t},\n\n\t//maximum string length\n\tmaxLength: function maxLength(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\treturn String(value).length <= parameters;\n\t},\n\n\t//in provided value list\n\tin: function _in(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (typeof parameters == \"string\") {\n\t\t\tparameters = parameters.split(\"|\");\n\t\t}\n\n\t\treturn value === \"\" || parameters.indexOf(value) > -1;\n\t},\n\n\t//must match provided regex\n\tregex: function regex(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\tvar reg = new RegExp(parameters);\n\n\t\treturn reg.test(value);\n\t},\n\n\t//value must be unique in this column\n\tunique: function unique(cell, value, parameters) {\n\t\tif (value === \"\" || value === null || typeof value === \"undefined\") {\n\t\t\treturn true;\n\t\t}\n\t\tvar unique = true;\n\n\t\tvar cellData = cell.getData();\n\t\tvar column = cell.getColumn()._getSelf();\n\n\t\tthis.table.rowManager.rows.forEach(function (row) {\n\t\t\tvar data = row.getData();\n\n\t\t\tif (data !== cellData) {\n\t\t\t\tif (value == column.getFieldValue(data)) {\n\t\t\t\t\tunique = false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn unique;\n\t},\n\n\t//must have a value\n\trequired: function required(cell, value, parameters) {\n\t\treturn value !== \"\" && value !== null && typeof value !== \"undefined\";\n\t}\n};\n\nTabulator.prototype.registerModule(\"validate\", Validate);\n\nexport default Tabulator;","/**\n * Copyright (C) 2017-present by Andrea Giammarchi - @WebReflection\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst {replace} = '';\n\n// escape\nconst es = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;\nconst ca = /[&<>'\"]/g;\n\nconst esca = {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n};\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>`, `\"`, and `'`.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n\n\n// unescape\nconst unes = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"'\n};\nconst cape = m => unes[m];\n\n/**\n * Safely unescape previously escaped entities such as `&`, `<`, `>`, `\"`,\n * and `'`.\n * @param {string} un a previously escaped string\n * @returns {string} the unescaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const unescape = un => replace.call(un, es, cape);\n","import { Column, ColumnSorter, ColumnAggregatorFunction } from './table.types';\nimport Tabulator from 'tabulator-tables';\nimport { escape } from 'html-escaper';\nimport { ElementPool } from './element-pool';\nimport { pickBy, negate } from 'lodash-es';\n\nexport class ColumnDefinitionFactory {\n constructor(private pool: ElementPool) {\n this.create = this.create.bind(this);\n }\n\n /**\n * Create Tabulator column definitions from a limel-table column configuration\n * @param {Column} column config describing the column\n * @returns {Tabulator.ColumnDefinition} Tabulator column\n */\n public create(column: Column<object>): Tabulator.ColumnDefinition {\n const definition: Tabulator.ColumnDefinition = {\n title: column.title,\n field: column.field,\n hozAlign: column.horizontalAlign,\n headerSort: column.headerSort,\n };\n\n if (column.headerComponent) {\n definition.titleFormatter = formatHeader(column);\n }\n\n if (column.component?.name || column.formatter) {\n definition.formatter = createFormatter(column, this.pool);\n definition.formatterParams = column as object;\n }\n\n if (column.aggregator) {\n definition.bottomCalc = getColumnAggregator(column);\n }\n\n return definition;\n }\n}\n\n/**\n * Formats the header of the column\n * @param {Column} column the configuration for the column\n * @returns {string | HTMLElement} custom component that renders a column header\n */\nexport const formatHeader = (column: Column) => (): string | HTMLElement => {\n const headerElement = document.createElement('div');\n headerElement.setAttribute('class', 'lime-col-title__custom-component');\n\n const titleElement = document.createElement('span');\n titleElement.setAttribute('class', 'title-component-text');\n titleElement.innerText = column.title;\n\n const customElement = document.createElement(column.headerComponent.name);\n customElement.setAttribute('class', 'title-component-slot');\n\n let props: object = column.headerComponent.props || {};\n if (column.headerComponent.propsFactory) {\n props = {\n ...props,\n // we pass null to propsFactory function because no data in column header\n ...column.headerComponent.propsFactory(null),\n };\n }\n\n setElementProperties(customElement, props);\n\n headerElement.appendChild(titleElement);\n headerElement.appendChild(customElement);\n\n return headerElement;\n};\n\n/**\n * Create a formatter to be used to format values in a column\n * @param {Column} column config describing the column\n * @param {ElementPool} pool pool to get custom components from\n * @returns {Tabulator.Formatter} Tabulator formatter\n */\nexport function createFormatter(\n column: Column,\n pool: ElementPool\n): Tabulator.Formatter {\n if (!column.component?.name) {\n return formatCell;\n }\n\n if (!columnElementExists(column)) {\n // eslint-disable-next-line no-console\n console.warn(\n `Failed to render custom component for column \"${column.field.toString()}\". Custom element <${\n column.component.name\n }/> does not exist. Using the default formatter.`\n );\n\n return formatCell;\n }\n\n return (cell: Tabulator.CellComponent) => {\n const value = formatCell(cell, column);\n\n return createCustomComponent(cell, column, value, pool);\n };\n}\n\nfunction columnElementExists(column: Column<any>) {\n const name = column.component.name;\n if (typeof name === 'string') {\n const isNativeElement = !name.includes('-');\n const customElementExists = customElements.get(column.component.name);\n\n return isNativeElement || customElementExists;\n } else {\n return false;\n }\n}\n\n/**\n * Format the value of a cell in the table\n * @param {Tabulator.CellComponent} cell the cell being rendered in the table\n * @param {Column} column configuration for the current column\n * @returns {string} the formatted value\n */\nexport function formatCell(\n cell: Tabulator.CellComponent,\n column: Column\n): string {\n const data = cell.getData();\n let value = cell.getValue();\n\n if (column.formatter) {\n value = column.formatter(value, data);\n }\n\n if (typeof value === 'string' && !column.component) {\n value = escape(value);\n }\n\n return value;\n}\n\n/**\n * Create a custom component that renders a cell value\n * @param {Tabulator.CellComponent} cell Tabulator cell\n * @param {Column} column lime-elements column configuration\n * @param {string} value the value of the cell being rendered\n * @param {ElementPool} pool pool to get custom components from\n * @returns {HTMLElement} custom component that renders a value in the table\n */\nexport function createCustomComponent(\n cell: Tabulator.CellComponent,\n column: Column,\n value: string,\n pool: ElementPool\n): HTMLElement {\n const field = cell.getField();\n const data = cell.getData();\n\n const element = pool.get(column.component.name);\n let props: object = column.component.props || {};\n if (column.component.propsFactory) {\n props = {\n ...props,\n ...column.component.propsFactory(data),\n };\n }\n\n props = {\n ...props,\n field: field,\n value: value,\n data: data,\n };\n\n element.style.display = 'inline-block';\n setElementProperties(element, props);\n\n createResizeObserver(element, cell.getColumn());\n\n return element;\n}\n\n/**\n * Set all properties for a custom element, including event listeners\n * @param {HTMLElement} element the custom element\n * @param {object} props object of properties and event listeners\n */\nexport function setElementProperties(element: HTMLElement, props: object) {\n const properties = pickBy(props, negate(isEventListener));\n Object.assign(element, properties);\n\n const listeners = pickBy(props, isEventListener);\n Object.entries(listeners).forEach(([key, value]) => {\n const event = getEventName(key);\n element.addEventListener(event, value as any);\n });\n}\n\n/**\n * Check if a property is an event listener.\n *\n * An event listener has to be a function and its property name have to start\n * with \"on\" followed by the name of the event in camel case, e.g. \"onEventName\"\n * @param {any} value the value to check\n * @param {string} key name of the property\n * @returns {boolean} true if the property of the object is an event listener\n */\nfunction isEventListener(value: any, key: string): boolean {\n if (typeof value !== 'function') {\n return false;\n }\n\n return /^on[A-Z]/.test(key);\n}\n\n/**\n * Get the name of an event from the name of an event listener\n *\n * E.g. \"onMyEvent\" will return \"myEvent\"\n * @param {string} eventListener name of the event listener\n * @returns {string} the name of the event\n */\nfunction getEventName(eventListener: string): string {\n // eslint-disable-next-line no-magic-numbers\n return eventListener.charAt(2).toLowerCase() + eventListener.slice(3);\n}\n\nfunction createResizeObserver(\n element: HTMLElement,\n column: Tabulator.ColumnComponent\n) {\n if (!('ResizeObserver' in window)) {\n return;\n }\n\n const RESIZE_TIMEOUT = 1000;\n const COLUMN_PADDING = 16;\n\n const observer = new ResizeObserver(() => {\n const width = element.getBoundingClientRect().width;\n const newWidth = width + COLUMN_PADDING;\n\n if (newWidth < column.getWidth()) {\n return;\n }\n\n column.setWidth(newWidth);\n });\n observer.observe(element);\n\n // We give the component some time to resize itself before we\n // stop listening for resize events\n setTimeout(() => {\n observer.unobserve(element);\n }, RESIZE_TIMEOUT);\n}\n\n// Tabulator seems to also have this `field` property, that does not appear on\n// the interface for some reason\ninterface TabulatorSorter extends Tabulator.Sorter {\n field: string;\n}\n\n/**\n * Create a column sorter from a tabulator sorter\n * @param {Column[]} columns all available columns in the table\n * @returns {Function} function that creates a sorter from a tabulator sorter\n */\nexport const createColumnSorter =\n (columns: Column[]) =>\n (sorter: TabulatorSorter): ColumnSorter => {\n const column = columns.find((col) => col.field === sorter.field);\n const direction = sorter.dir.toUpperCase() as 'ASC' | 'DESC';\n\n return {\n column: column,\n direction: direction,\n };\n };\n\nexport function getColumnAggregator(column: Column): Tabulator.ColumnCalc {\n const aggregator = column.aggregator;\n if (isAggregatorFunction(aggregator)) {\n return (values: any[], data: object[]) => {\n return aggregator(column, values, data);\n };\n }\n\n return aggregator;\n}\n\nfunction isAggregatorFunction(value: any): value is ColumnAggregatorFunction {\n return typeof value === 'function';\n}\n","export class ElementPool {\n private pool: Record<string, HTMLElement[]>;\n private usedElements: WeakMap<Element, boolean>;\n private document: Document;\n\n constructor(document: Document) {\n this.document = document;\n this.releaseAll();\n this.clear();\n }\n\n /**\n * Get an element from the pool\n * @param {string} name tag name of the element\n * @returns {HTMLElement} the element\n */\n public get(name: string): HTMLElement {\n let element = this.pool[name]?.find(this.isFree);\n if (!element) {\n element = this.createElement(name);\n }\n\n this.usedElements.set(element, true);\n\n return element;\n }\n\n private isFree = (element: HTMLElement) => {\n return !this.usedElements.has(element);\n };\n\n /**\n * Release an element from the pool so that it can be reused\n * @param {HTMLElement} element the element to release from the pool\n */\n public release(element: HTMLElement): void {\n this.usedElements.delete(element);\n }\n\n /**\n * Release all elements from the pool so that they can be reused\n */\n public releaseAll() {\n this.usedElements = new WeakMap();\n }\n\n /**\n * Remove all elements from the pool and makes them available for garbage\n * collection\n */\n public clear() {\n this.pool = {};\n }\n\n private createElement(name: string) {\n const element = this.document.createElement(name);\n if (!(name in this.pool)) {\n this.pool[name] = [];\n }\n\n this.pool[name].push(element);\n\n return element;\n }\n}\n","/**\n * Contains changes made to a selection\n */\nexport interface SelectionChangeSet {\n /**\n * Tells whether the items were selected or deselected\n */\n selected: boolean;\n /**\n * Gets the affected items\n */\n items: any[];\n /**\n * Gets the indexes of the affected items\n */\n indexes: number[];\n}\n\n/**\n * Contains a set of selected data objects with methods for adding and removing\n * items to the selection by referring to them by their index/position.\n * Maintains a memory of the last toggled item which can be used to select or\n * deselect a range of items between the last toggled item and a given item.\n */\nexport class Selection {\n private selectedItems: Set<any>;\n private lastToggledIndex: number;\n\n /**\n * Creates an instance of the Selection class.\n * The provided function `getDataByIndex` is used to provide data for the\n * selected items when selection is toggled by using the item index,\n * which can be the row position in a table.\n * @param {Function} getDataByIndex A function that returns the data at the given index\n */\n constructor(private getDataByIndex: (number) => any) {\n this.clear();\n }\n\n /**\n * @returns {number} The size of the selection\n */\n get size(): number {\n return this.selectedItems.size;\n }\n\n /**\n * @returns {any[]} The selected items\n */\n get items(): any[] {\n return Array.from(this.selectedItems);\n }\n\n /**\n * @param {any[]} items The selected items\n */\n set items(items: any[]) {\n this.selectedItems = new Set(items);\n this.lastToggledIndex = -1;\n }\n\n /**\n * Checks whether the given item exist in the selection\n * @param {any} data The data to look up\n * @returns {boolean} `true` if the given data exist in the selection, otherwise `false`\n */\n public has(data: any) {\n return this.selectedItems.has(data);\n }\n\n /**\n * Toggles the item at the given index in the selection\n * @param {number} index The index of the item to toggle\n * @returns {SelectionChangeSet} The changes made to the selection\n */\n public toggleSelection(index: number): SelectionChangeSet {\n return this.toggleRange(index, index);\n }\n\n /**\n * Toggles the items from the last toggled index to the given index in the selection.\n * The toggled items will be toggled as the item at the given index no matter\n * their current state in the selection.\n * Initially, when no last toggled index exist, this function behaves like\n * `toggleSelection`.\n * @param {number} index The index of the item to toggle\n * @returns {SelectionChangeSet} The changes made to the selection\n */\n public toggleSelectionFromLastIndex(index: number): SelectionChangeSet {\n if (this.lastToggledIndex < 0) {\n return this.toggleSelection(index);\n }\n\n return this.toggleRange(this.lastToggledIndex, index);\n }\n\n /**\n * Clears the current selection and resets last toggled index\n */\n public clear() {\n this.selectedItems = new Set();\n this.lastToggledIndex = -1;\n }\n\n private toggleRange = (\n fromIndex: number,\n toIndex: number\n ): SelectionChangeSet => {\n const select = !this.selectedItems.has(this.getDataByIndex(toIndex));\n\n const lowerBound = Math.min(fromIndex, toIndex);\n const upperBound = Math.max(fromIndex, toIndex);\n const updatedIndexes = [];\n const updatedItems = [];\n for (let index = lowerBound; index <= upperBound; index++) {\n const data = this.getDataByIndex(index);\n\n if (!data) {\n continue;\n }\n\n const isSelected = this.selectedItems.has(data);\n\n if (isSelected === select) {\n continue;\n }\n\n if (select) {\n this.selectedItems.add(data);\n } else {\n this.selectedItems.delete(data);\n }\n\n updatedIndexes.push(index);\n updatedItems.push(data);\n }\n\n this.lastToggledIndex = toIndex;\n\n return {\n selected: select,\n items: updatedItems,\n indexes: updatedIndexes,\n };\n };\n}\n","import { EventEmitter } from '@stencil/core';\nimport Tabulator from 'tabulator-tables';\nimport { setElementProperties } from './columns';\nimport { ElementPool } from './element-pool';\nimport { Selection, SelectionChangeSet } from './selection';\nimport { isEqual } from 'lodash-es';\n\nconst LIMEL_CHECKBOX = 'limel-checkbox';\n\n/**\n * Provides row selection to Tabulator with shift-click support for range selections\n */\nexport class TableSelection {\n private selection: Selection;\n\n /**\n * Creates an instance of the TableSelection class\n * @param {Function} getTable Function that returns the Tabulator instance\n * @param {ElementPool} pool The element pool used to cache the checkbox components\n * @param {EventEmitter<object[]>} selectEvent The event emitter to use when checkboxes are toggled\n */\n constructor(\n private getTable: () => Tabulator,\n private pool: ElementPool,\n private selectEvent: EventEmitter<object[]>\n ) {\n this.selection = new Selection((index) =>\n this.getRowByIndex(index).getData()\n );\n }\n\n /**\n * @returns {boolean} Returns `true` when the selection is non-empty, otherwise `false`\n */\n get hasSelection(): boolean {\n return this.selection.size > 0;\n }\n\n /**\n * Clears the selection\n */\n public clear() {\n this.selection.clear();\n }\n\n /**\n * Sets the selected items\n * @param {any[]} data The selected items\n */\n public setSelection(data: any[]) {\n if (isEqual(this.selection.items, data)) {\n return;\n }\n\n this.selection.items = data;\n const rows = this.getActiveRows();\n rows.forEach((row) =>\n this.updateRowSelector(row, this.selection.has(row.getData()))\n );\n }\n\n /**\n * Prepends a checkbox column used for row selection to the given column definitions\n * @param {Tabulator.ColumnDefinition[]} columnDefinitions The column definition for the table\n * @returns {Tabulator.ColumnDefinition[]} The column definitions with the checkbox column prepended to it\n */\n public getColumnDefinitions(\n columnDefinitions: Tabulator.ColumnDefinition[]\n ): Tabulator.ColumnDefinition[] {\n return [this.getRowSelectorColumnDefinition(), ...columnDefinitions];\n }\n\n private getRowSelectorColumnDefinition(): Tabulator.ColumnDefinition {\n return {\n title: '',\n formatter: this.getRowSelectorFormatter(),\n cellClick: this.rowSelectorCellClick,\n headerClick: this.headerClick,\n headerSort: false,\n cssClass: 'limel-table--row-selector',\n resizable: false,\n htmlOutput: false,\n clipboard: false,\n };\n }\n\n private headerClick(ev: Event) {\n ev.stopPropagation();\n }\n\n private getRowSelectorFormatter() {\n return (cell: Tabulator.CellComponent) => {\n const element = this.pool.get(LIMEL_CHECKBOX);\n setElementProperties(element, {\n checked: this.selection.has(cell.getData()),\n });\n element.style.display = 'inline-block';\n\n return element;\n };\n }\n\n /**\n * Tabulator cell click handler that updates the selection for the clicked\n * row and toggles the selection from the last clicked row if the shift key\n * is pressed down.\n * @param {PointerEvent} ev The pointer event\n * @param {Tabulator.CellComponent} cell The clicked cell component\n */\n protected rowSelectorCellClick = (\n ev: PointerEvent,\n cell: Tabulator.CellComponent\n ) => {\n ev.stopPropagation();\n ev.preventDefault();\n\n const clickedRow = cell.getRow();\n const rowPosition = clickedRow.getPosition(true);\n\n if (ev.shiftKey) {\n this.updateRowSelectors(\n this.selection.toggleSelectionFromLastIndex(rowPosition)\n );\n } else {\n this.updateRowSelectors(\n this.selection.toggleSelection(rowPosition)\n );\n }\n\n this.selectEvent.emit(this.selection.items);\n };\n\n private updateRowSelectors = (changeSet: SelectionChangeSet) => {\n changeSet.indexes\n .map(this.getRowByIndex)\n .forEach((row) => this.updateRowSelector(row, changeSet.selected));\n };\n\n private updateRowSelector = (\n row: Tabulator.RowComponent,\n checked: boolean\n ) => {\n const cell = row.getCells()[0];\n if (cell) {\n const checkBox = cell.getElement().querySelector(LIMEL_CHECKBOX);\n checkBox.checked = checked;\n }\n };\n\n private getActiveRows: () => Tabulator.RowComponent[] = () => {\n const table = this.getTable();\n if (!table) {\n return [];\n }\n\n return table.getRows('active');\n };\n\n private getRowByIndex = (index: number) => {\n return this.getTable().getRowFromPosition(index, true);\n };\n}\n","export type Layout =\n | 'default'\n | 'stretchLastColumn'\n | 'stretchColumns'\n | 'lowDensity';\n\nexport function mapLayout(layout: Layout) {\n const layouts = {\n stretchLastColumn: 'fitDataStretch',\n stretchColumns: 'fitColumns',\n lowDensity: 'fitData',\n };\n\n return layouts[layout] || 'fitDataFill';\n}\n","@use '../../style/mixins';\n@use '../../style/functions';\n@use '../../style/internal/lime-typography';\n@import '../../../node_modules/tabulator-tables/src/scss/tabulator.scss';\n\n/*\n* @prop --table-max-column-width: defines a maximum width for columns using standard size units, to prevent the table from growing too wide. Set to `auto` if you do not need this limitation. Defaults to `40rem`.\n*/\n\n$width-of-sorter-arrow: 0.5rem;\n$cell-padding: 0.5rem;\n$table--has-interactive-rows--selectable-row--hover: 2;\n$table--limel-table--row-selector: 1;\n\n:host(limel-table) {\n isolation: isolate;\n display: block;\n --table-header-background-color: var(--contrast-500);\n --table-header-background-color--hover: var(--contrast-400);\n --table-header-background-color-when-being-dragged: var(--contrast-100);\n\n --table-row-background-color--odd: var(--contrast-200);\n --table-row-background-color--even: var(--contrast-100);\n --table-row-background-color--hover: var(\n --lime-elevated-surface-background-color\n );\n --table-row-background-color--active: var(--contrast-300);\n\n --table-arrow-color: var(--contrast-800);\n --table-arrow-color--active: var(--mdc-theme-primary);\n\n --table-text-color: var(--mdc-theme-text-primary-on-background);\n}\n\n@import './partial-styles/_table-main-layout';\n\n#tabulator-container {\n position: relative;\n}\n\n#tabulator-container,\n#tabulator-table {\n @include lime-typography.base;\n background-color: transparent;\n border: none;\n}\n\n.tabulator {\n .tabulator-header {\n color: var(--table-text-color);\n }\n .tabulator-tableHolder {\n .tabulator-table {\n color: var(--table-text-color);\n background-color: transparent;\n }\n }\n\n .tabulator-header {\n border-bottom: 0;\n background-color: rgb(var(--table-header-background-color));\n\n .tabulator-headers {\n width: fit-content;\n }\n\n .tabulator-col {\n transition: background-color 0.2s ease;\n background-color: rgb(var(--table-header-background-color));\n border-right-color: rgb(var(--contrast-200));\n\n &.tabulator-sortable {\n &:hover {\n background-color: rgb(\n var(--table-header-background-color--hover)\n );\n }\n }\n\n .tabulator-col-content {\n padding-right: $width-of-sorter-arrow;\n }\n }\n\n .tabulator-col-title-holder {\n display: flex;\n gap: 0.25rem;\n }\n\n .tabulator-col-sorter {\n order: 1;\n }\n .tabulator-col-title {\n order: 2;\n font-weight: 500;\n padding-right: 0 !important;\n line-height: functions.pxToRem(20);\n }\n }\n}\n\n.tabulator-row {\n &.tabulator-selectable {\n transition: background-color 0.2s ease;\n\n &:hover {\n background-color: rgb(var(--contrast-300));\n }\n &:not(.active) {\n &:hover {\n background-color: rgb(var(--table-header-background-color));\n }\n }\n }\n &.tabulator-row-odd:not(.active):not(:hover) {\n background-color: rgb(var(--table-row-background-color--odd));\n }\n\n &.tabulator-row-even:not(.active):not(:hover) {\n background-color: rgb(var(--table-row-background-color--even));\n }\n\n &.active {\n background-color: rgb(var(--table-row-background-color--active));\n box-shadow: var(--button-shadow-inset-pressed);\n\n &:before {\n $width-of-selected-row-indicator: 0.2rem;\n content: '';\n display: inline-block;\n box-sizing: border-box;\n position: sticky;\n z-index: $table--has-interactive-rows--selectable-row--hover + 1;\n inset: 0 0 auto 0;\n border: $width-of-selected-row-indicator solid\n var(--mdc-theme-primary);\n border-radius: 1rem;\n margin-right: -$width-of-selected-row-indicator * 2;\n }\n }\n\n .tabulator-cell {\n border-right: transparent;\n padding: $cell-padding;\n padding-left: $cell-padding + $width-of-sorter-arrow;\n\n display: inline-flex;\n align-items: center;\n &[style*='text-align: right;'] {\n justify-content: flex-end;\n }\n &[style*='text-align: center;'] {\n justify-content: center;\n }\n }\n}\n\n.tabulator-col,\n.tabulator-cell {\n max-width: var(--table-max-column-width, 40rem);\n font-size: functions.pxToRem(13);\n}\n\n#tabulator-loader,\n#tabulator-empty-text {\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n#tabulator-loader {\n background-color: rgba(var(--contrast-100), 0.6);\n cursor: wait;\n}\n\n#tabulator-empty-text {\n color: rgb(var(--contrast-800));\n font-weight: bold;\n font-size: functions.pxToRem(20);\n pointer-events: none;\n}\n\n@import './partial-styles/tabulator-arrow';\n@import './partial-styles/tabulator-paginator';\n@import './partial-styles/tabulator-loader';\n@import './partial-styles/tabulator-custom-styles';\n@import './partial-styles/header-component';\n@import './partial-styles/movable-columns';\n@import './partial-styles/_tabulator-footer';\n@import './partial-styles/_row-selection';\n","import {\n Component,\n h,\n Prop,\n Element,\n Watch,\n EventEmitter,\n Event,\n Host,\n} from '@stencil/core';\nimport TabulatorTable from 'tabulator-tables';\nimport {\n Column,\n TableParams,\n ColumnSorter,\n ColumnAggregate,\n} from './table.types';\nimport { ColumnDefinitionFactory, createColumnSorter } from './columns';\nimport { isEqual, has } from 'lodash-es';\nimport { ElementPool } from './element-pool';\nimport { TableSelection } from './table-selection';\nimport { mapLayout, Layout } from './layout';\n\nconst FIRST_PAGE = 1;\n\n/**\n * @exampleComponent limel-example-table\n * @exampleComponent limel-example-table-custom-components\n * @exampleComponent limel-example-table-header-menu\n * @exampleComponent limel-example-table-movable-columns\n * @exampleComponent limel-example-table-sorting-disabled\n * @exampleComponent limel-example-table-local\n * @exampleComponent limel-example-table-remote\n * @exampleComponent limel-example-table-activate-row\n * @exampleComponent limel-example-table-selectable-rows\n * @exampleComponent limel-example-table-default-sorted\n * @exampleComponent limel-example-table-layout-default\n * @exampleComponent limel-example-table-layout-stretch-last-column\n * @exampleComponent limel-example-table-layout-stretch-columns\n * @exampleComponent limel-example-table-layout-low-density\n * @exampleComponent limel-example-table-interactive-rows\n */\n@Component({\n tag: 'limel-table',\n styleUrl: 'table.scss',\n shadow: true,\n})\nexport class Table {\n /**\n * Data to be displayed in the table\n */\n @Prop()\n public data: object[] = [];\n\n /**\n * Columns used to display the data\n */\n @Prop()\n public columns: Column[] = [];\n\n /**\n * Set to either `local` or `remote` to change how the table handles the\n * loaded data. When in `local` mode, all sorting and pagination will be\n * done locally with the data given. When in `remote` mode, the consumer\n * is responsible to give the table new data when a `load` event occurs\n */\n @Prop()\n public mode: 'local' | 'remote' = 'local';\n\n /**\n * Defines the layout of the table, based on how width of the columns are calculated.\n *\n * - `default`: makes columns as wide as their contents.\n * - `stretchLastColumn`: makes columns as wide as their contents, stretch the last column to fill up the remaining table width.\n * - `stretchColumns`: stretches all columns to fill the available width when possible.\n * - `lowDensity`: makes columns as wide as their contents, and creates a low density and airy layout.\n */\n @Prop()\n public layout: Layout;\n\n /**\n * Number of rows per page\n */\n @Prop()\n public pageSize: number;\n\n /**\n * The number of total rows available for the data\n */\n @Prop()\n public totalRows: number;\n\n /**\n * The initial sorted columns\n */\n @Prop()\n public sorting: ColumnSorter[] = [];\n\n /**\n * Active row in the table\n */\n @Prop({ mutable: true })\n public activeRow: object;\n\n /**\n * Set to `true` to enable reordering of the columns by dragging them\n */\n @Prop()\n public movableColumns: boolean;\n\n /**\n * Set to `true` to trigger loading animation\n */\n @Prop()\n public loading: boolean = false;\n\n /**\n * The page to show\n */\n @Prop()\n public page: number = FIRST_PAGE;\n\n /**\n * Emitted when `mode` is `local` the data is sorted\n */\n @Event()\n public sort: EventEmitter<ColumnSorter[]>;\n\n /**\n * Emitted when a new page has been set\n */\n @Event()\n public changePage: EventEmitter<number>;\n\n /**\n * A message to display when the table has no data\n */\n @Prop()\n public emptyMessage: string;\n\n /**\n * Column aggregates to be displayed in the table\n */\n @Prop()\n public aggregates: ColumnAggregate[];\n\n /**\n * Enables row selection\n */\n @Prop()\n public selectable: boolean;\n\n /**\n * Selected data. Requires `selectable` to be true.\n */\n @Prop()\n public selection: object[];\n\n /**\n * Emitted when `mode` is `remote` and the table is loading new data. The\n * consumer is responsible for giving the table new data\n */\n @Event()\n public load: EventEmitter<TableParams>;\n\n /**\n * Emitted when a row is activated\n */\n @Event()\n public activate: EventEmitter<object>;\n\n /**\n * Emitted when the columns have been changed\n */\n @Event()\n public changeColumns: EventEmitter<Column[]>;\n\n /**\n * Emitted when the row selection has been changed\n */\n @Event()\n public select: EventEmitter<object[]>;\n\n /**\n * Emitted when the select all rows state is toggled\n */\n @Event()\n public selectAll: EventEmitter<boolean>;\n\n @Element()\n private host: HTMLLimelTableElement;\n\n private currentLoad: { page: number; sorters: ColumnSorter[] };\n\n private tabulator: Tabulator;\n\n private pool: ElementPool;\n private columnFactory: ColumnDefinitionFactory;\n private firstRequest: boolean;\n private currentSorting: ColumnSorter[];\n private tableSelection: TableSelection;\n\n constructor() {\n this.handleDataSorting = this.handleDataSorting.bind(this);\n this.handlePageLoaded = this.handlePageLoaded.bind(this);\n this.handleAjaxRequesting = this.handleAjaxRequesting.bind(this);\n this.requestData = this.requestData.bind(this);\n this.onClickRow = this.onClickRow.bind(this);\n this.formatRow = this.formatRow.bind(this);\n this.formatRows = this.formatRows.bind(this);\n this.updateMaxPage = this.updateMaxPage.bind(this);\n this.initTabulatorComponent = this.initTabulatorComponent.bind(this);\n this.setSelection = this.setSelection.bind(this);\n this.addColumnAggregator = this.addColumnAggregator.bind(this);\n this.pool = new ElementPool(document);\n this.columnFactory = new ColumnDefinitionFactory(this.pool);\n }\n\n public componentWillLoad() {\n this.firstRequest = this.mode === 'remote';\n this.initTableSelection();\n }\n\n public componentDidLoad() {\n this.init();\n }\n\n public disconnectedCallback() {\n this.pool.clear();\n }\n\n @Watch('totalRows')\n protected totalRowsChanged() {\n this.updateMaxPage();\n }\n\n @Watch('pageSize')\n protected pageSizeChanged() {\n this.updateMaxPage();\n }\n\n @Watch('page')\n protected pageChanged() {\n if (!this.tabulator) {\n return;\n }\n\n if (this.tabulator.getPage() === this.page) {\n return;\n }\n\n this.tabulator.setPage(this.page);\n }\n\n @Watch('activeRow')\n protected activeRowChanged() {\n if (!this.tabulator) {\n return;\n }\n\n this.formatRows();\n }\n\n @Watch('data')\n protected updateData(newData = [], oldData = []) {\n if (isEqual(newData, oldData)) {\n return;\n }\n\n this.pool.releaseAll();\n\n setTimeout(() => {\n if (!this.tabulator) {\n return;\n }\n\n this.tabulator.replaceData(this.data);\n this.setSelection();\n });\n }\n\n @Watch('columns')\n protected updateColumns(newColumns: Column[], oldColumns: Column[]) {\n if (!this.tabulator) {\n return;\n }\n\n if (this.areSameColumns(newColumns, oldColumns)) {\n return;\n }\n\n const columnsInTable = this.tabulator\n .getColumns()\n .filter((c) => c.getField());\n\n const oldColumnsInTable = columnsInTable.map((c) =>\n oldColumns.find((old) => old.field === c.getField())\n );\n\n if (this.areSameColumns(newColumns, oldColumnsInTable)) {\n return;\n }\n\n // Updating columns requires a reinitialization otherwise sorting will not work\n // afterwards\n this.init();\n }\n\n @Watch('aggregates')\n protected updateAggregates(\n newAggregates: ColumnAggregate[],\n oldAggregates: ColumnAggregate[]\n ) {\n if (!this.tabulator) {\n return;\n }\n\n if (isEqual(newAggregates, oldAggregates)) {\n return;\n }\n\n if (!this.haveSameAggregateFields(newAggregates, oldAggregates)) {\n this.init();\n\n return;\n }\n\n this.tabulator.recalc();\n this.tabulator.rowManager.redraw();\n }\n\n @Watch('selection')\n protected updateSelection(newSelection: any[]) {\n if (!this.tableSelection) {\n return;\n }\n\n this.tableSelection.setSelection(newSelection);\n }\n\n @Watch('selectable')\n protected updateSelectable() {\n if (this.tableSelection && !this.selectable) {\n this.tableSelection = null;\n }\n\n this.initTableSelection();\n this.init();\n }\n\n private areSameColumns(newColumns: Column[], oldColumns: Column[]) {\n return (\n newColumns.length === oldColumns.length &&\n newColumns.every((column) => oldColumns.includes(column))\n );\n }\n\n private haveSameAggregateFields(\n newAggregates: ColumnAggregate[],\n oldAggregates: ColumnAggregate[]\n ) {\n const oldAggregateFields = oldAggregates?.map((a) => a.field) || [];\n\n return (\n newAggregates?.length === oldAggregates?.length &&\n !!newAggregates?.every((a) => oldAggregateFields.includes(a.field))\n );\n }\n\n private init() {\n if (this.tabulator) {\n this.pool.releaseAll();\n this.tabulator.destroy();\n }\n\n const options = this.getOptions();\n const table: HTMLElement =\n this.host.shadowRoot.querySelector('#tabulator-table');\n this.initTabulatorComponent(table, options);\n }\n\n /*\n * Tabulator requires that the html element it's rendered inside\n * has a size before it's created, otherwise it doesn't consider\n * it self renderedy completely. (the callback \"renderComplete\"\n * is never run).\n *\n * @param table {HTMLElement}\n * @param options {Tabulator.Options}\n *\n * @returns {void}\n */\n private initTabulatorComponent(\n table: HTMLElement,\n options: Tabulator.Options\n ) {\n // Some browsers do not implement the ResizeObserver API...\n // If that's the case lets just create the table no\n // matter if its rendered or not.\n if (!('ResizeObserver' in window)) {\n this.tabulator = new TabulatorTable(table, options);\n this.setSelection();\n\n return;\n }\n\n const observer = new ResizeObserver(() => {\n this.tabulator = new TabulatorTable(table, options);\n this.setSelection();\n observer.unobserve(table);\n });\n observer.observe(table);\n }\n\n private initTableSelection() {\n if (this.selectable) {\n this.tableSelection = new TableSelection(\n () => this.tabulator,\n this.pool,\n this.select\n );\n this.tableSelection.setSelection(this.selection);\n }\n }\n\n private setSelection() {\n if (!(this.tabulator && this.tableSelection)) {\n return;\n }\n\n this.tableSelection.setSelection(this.selection);\n }\n\n private updateMaxPage() {\n this.tabulator?.setMaxPage(this.calculatePageCount());\n }\n\n private getOptions(): Tabulator.Options {\n const ajaxOptions = this.getAjaxOptions();\n const paginationOptions = this.getPaginationOptions();\n const columnOptions = this.getColumnOptions();\n\n return {\n data: this.data,\n layout: mapLayout(this.layout),\n columns: this.getColumnDefinitions(),\n dataSorting: this.handleDataSorting,\n pageLoaded: this.handlePageLoaded,\n ...ajaxOptions,\n ...paginationOptions,\n rowClick: this.onClickRow,\n rowFormatter: this.formatRow,\n initialSort: this.getColumnSorter(),\n nestedFieldSeparator: false,\n ...columnOptions,\n };\n }\n\n private getColumnSorter(): Tabulator.Sorter[] {\n const sorting = this.currentSorting ?? this.sorting;\n\n return sorting.map((sorter: ColumnSorter) => {\n return {\n column: String(sorter.column.field),\n dir: sorter.direction.toLocaleLowerCase() as Tabulator.SortDirection,\n };\n });\n }\n\n private getColumnDefinitions(): Tabulator.ColumnDefinition[] {\n const columnDefinitions = this.columns\n .map(this.addColumnAggregator)\n .map(this.columnFactory.create);\n\n if (this.tableSelection) {\n return this.tableSelection.getColumnDefinitions(columnDefinitions);\n }\n\n return columnDefinitions;\n }\n\n private addColumnAggregator(column: Column<any>): Column<any> {\n if (!this.aggregates?.length || column.aggregator) {\n return column;\n }\n\n const aggregate = this.aggregates.find((a) => a.field === column.field);\n if (aggregate) {\n column.aggregator = (\n col?: Column,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _values?: any[],\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _data?: any[]\n ) => {\n if (!col) {\n return undefined;\n }\n\n const value = this.aggregates.find(\n (a) => a.field === col.field\n )?.value;\n\n if (col.formatter) {\n return col.formatter(value);\n }\n\n return value;\n };\n }\n\n return column;\n }\n\n private getAjaxOptions(): Tabulator.OptionsData {\n if (!this.isRemoteMode()) {\n return {};\n }\n\n // Tabulator needs a URL to be set, even though this one will never be\n // used since we have our own custom `ajaxRequestFunc`\n const remoteUrl = 'https://localhost';\n\n return {\n ajaxSorting: true,\n ajaxURL: remoteUrl,\n ajaxRequestFunc: this.requestData,\n ajaxRequesting: this.handleAjaxRequesting,\n };\n }\n\n /*\n * The ajaxRequesting callback is triggered when ever an ajax request is made.\n *\n * Tabulator is requesting data with an AJAX request even though it has been\n * given data when it was created.\n *\n * It seems unnecessary for us to emit the `load` event as well when this\n * happens, since we can just initialize the table with the data that has been\n * given to us. Therefore, we abort the request if:\n *\n * * its the first time this method is called and,\n * * data has been sent in to the component as a prop\n *\n */\n private handleAjaxRequesting() {\n const abortRequest = this.firstRequest && !!this.data?.length;\n this.firstRequest = false;\n\n if (abortRequest) {\n setTimeout(() => {\n this.updateMaxPage();\n this.tabulator.replaceData(this.data);\n });\n\n return false;\n }\n\n return true;\n }\n\n private getPaginationOptions(): Tabulator.OptionsPagination {\n if (!this.pageSize) {\n return {};\n }\n\n return {\n pagination: this.isRemoteMode() ? 'remote' : 'local',\n paginationSize: this.pageSize,\n paginationInitialPage: this.page,\n };\n }\n\n private requestData(_, __, params: any): Promise<object> {\n const sorters = params.sorters;\n const currentPage = params.page;\n\n if (this.page !== currentPage) {\n this.changePage.emit(currentPage);\n }\n\n const columnSorters = sorters.map(createColumnSorter(this.columns));\n\n const load = {\n page: currentPage,\n sorters: columnSorters,\n };\n\n // In order to make limel-table behave more like a controlled component,\n // we always return the existing data from this function, therefore\n // relying on the consumer component to handle the loading\n // state via the loading prop, if it actually decides to load new data.\n const resolveExistingData = Promise.resolve({\n last_page: this.calculatePageCount(), // eslint-disable-line camelcase\n data: this.data,\n });\n\n if (isEqual(this.currentLoad, load)) {\n return resolveExistingData;\n }\n\n this.currentSorting = columnSorters;\n this.currentLoad = load;\n this.load.emit(load);\n\n return resolveExistingData;\n }\n\n private isRemoteMode(): boolean {\n return this.mode === 'remote';\n }\n\n private handleDataSorting(sorters: Tabulator.Sorter[]): void {\n if (this.isRemoteMode()) {\n return;\n }\n\n const columnSorters = sorters.map(createColumnSorter(this.columns));\n if (columnSorters.length === 0) {\n return;\n }\n\n this.sort.emit(columnSorters);\n }\n\n private handlePageLoaded(page: number): void {\n if (this.isRemoteMode()) {\n return;\n }\n\n this.changePage.emit(page);\n }\n\n private onClickRow(_ev, row: Tabulator.RowComponent): void {\n if (typeof row.getPosition === 'undefined') {\n // Not a data row, probably a CalcComponent\n return;\n }\n\n if (this.activeRow === row.getData()) {\n this.activeRow = null;\n } else {\n this.activeRow = row.getData();\n }\n\n this.activate.emit(this.activeRow);\n }\n\n private getActiveRows: () => Tabulator.RowComponent[] = () => {\n if (!this.tabulator) {\n return [];\n }\n\n return this.tabulator.getRows('active');\n };\n\n private getActiveRowsData: () => object[] = () => {\n // Note: Tabulator.getData() creates copies of each data object\n // and will break this.selection.has checks, hence why this function\n // intentionally retrieves the data using the row components\n return this.getActiveRows().map((row) => row.getData());\n };\n\n private selectAllOnChange = (ev: CustomEvent<boolean>) => {\n const selectAll = ev.detail;\n\n ev.stopPropagation();\n ev.preventDefault();\n\n const newSelection = selectAll ? this.getActiveRowsData() : [];\n this.select.emit(newSelection);\n this.tableSelection.setSelection(newSelection);\n this.selectAll.emit(selectAll);\n };\n\n private formatRows() {\n this.tabulator.getRows().forEach(this.formatRow);\n }\n\n private formatRow(row: Tabulator.RowComponent) {\n if (this.activeRow === row.getData()) {\n row.getElement().classList.add('active');\n } else {\n row.getElement().classList.remove('active');\n }\n }\n\n private calculatePageCount(): number {\n let total = this.totalRows;\n if (!total) {\n total = this.data.length;\n }\n\n return Math.ceil(total / this.pageSize);\n }\n\n private hasAggregation(columns: Column[]): boolean {\n return columns.some((column) => has(column, 'aggregator'));\n }\n\n private getColumnOptions = (): Tabulator.OptionsColumns => {\n if (!this.movableColumns) {\n return {};\n }\n\n return {\n movableColumns: true,\n columnMoved: this.handleMoveColumn,\n };\n };\n\n private handleMoveColumn = (_, components: Tabulator.ColumnComponent[]) => {\n const columns = components.map(this.findColumn).filter((c) => c);\n this.changeColumns.emit(columns);\n };\n\n private findColumn = (component: Tabulator.ColumnComponent): Column => {\n return this.columns.find((column) => {\n return (\n column.field === component.getField() &&\n column.title === component.getDefinition().title\n );\n });\n };\n\n render() {\n return (\n <Host\n class={{\n 'has-low-density': this.layout === 'lowDensity',\n }}\n >\n <div\n id=\"tabulator-container\"\n class={{\n 'has-pagination': this.totalRows > this.pageSize,\n 'has-aggregation': this.hasAggregation(this.columns),\n 'has-movable-columns': this.movableColumns,\n 'has-rowselector': this.selectable,\n 'has-selection': this.tableSelection?.hasSelection,\n }}\n >\n {/* Toggle style instead of removing the loader\n because removing the element will cause a rerender, breaking the\n tabulator table */}\n <div\n id=\"tabulator-loader\"\n style={{ display: this.loading ? 'flex' : 'none' }}\n >\n <limel-spinner size=\"large\" />\n </div>\n {this.renderEmptyMessage()}\n {this.renderSelectAll()}\n <div id=\"tabulator-table\" />\n </div>\n </Host>\n );\n }\n\n private renderSelectAll() {\n if (!this.selectable) {\n return;\n }\n\n const showSelectAll = !this.loading && this.tableSelection;\n\n return (\n <div\n class=\"select-all\"\n style={{ display: showSelectAll ? 'inline-block' : 'none' }}\n >\n <limel-checkbox\n onChange={this.selectAllOnChange}\n disabled={!this.data.length}\n checked={this.tableSelection?.hasSelection}\n indeterminate={\n this.tableSelection?.hasSelection &&\n this.selection?.length < this.data.length\n }\n />\n </div>\n );\n }\n\n private renderEmptyMessage() {\n const showEmptyMessage =\n !this.loading && !this.data.length && this.emptyMessage;\n\n return (\n <div\n id=\"tabulator-empty-text\"\n style={{ display: showEmptyMessage ? 'flex' : 'none' }}\n >\n <span>{this.emptyMessage}</span>\n </div>\n );\n }\n}\n"],"version":3}
|